{"repo":"auula/urnadb","free":true,"listed":false,"github":"https://github.com/auula/urnadb","clone":"git clone https://github.com/auula/urnadb.git","description":"UrnaDB is a NoSQL database support diverse data types and transactions.","language":"Go","stars":280,"topics":["storage","storage-provider","kv","kvstore","bitcask","database","kvdb","nosql","nosql-database","log"],"license":null,"category":"databases-storage","readme_excerpt":"🏺️ UrnaDB is a NoSQL database support diverse data types and transactions. --- --- 简体中文 English --- 🎉 Feature - 支持多种内置的数据结构 - 高吞吐量、低延迟、高效批量数据写入 - 支持磁盘数据存储和磁盘垃圾数据回收 - 支持磁盘数据静态加密和静态数据压缩 - 支持 IP 白名单功能保障数据的安全访问 - 支持通过基于 RESTful API 协议操作数据 --- 🚀 Quick Start 使用 Docker 可以快速部署 urnadb:latest 的镜像来测试 UrnaDB 提供的服务，运行以下命令即可拉取 UrnaDB 镜像： 运行 UrnaDB 镜像启动容器服务，并且映射端口到外部主机网络，执行下面的命令： UrnaDB 提供使用 RESTful API 的方式进行数据交互，理论上任意具备 HTTP 协议的客户端都支持访问和操作 UrnaDB 服务实例。在调用 RESTful API 时需要在请求头中添加 Auth-Token 进行鉴权，该密钥由 UrnaDB 进程自动生成，可通过容器运行时日志获取，使用以下命令查看启动日志： 如果计划将 UrnaDB 作为长期运行的服务，推荐直接使用主流 Linux 发行版来运行而非容器技术。采用裸机 Linux 部署 UrnaDB 服务，可手动优化存储引擎参数，以获得更稳定的性能和更高的资源利用率，具体参数配置建议查看官方文档。 --- 🕹️ RESTful API 目前 UrnaDB 服务对外提供数据交互接口是基于 HTTP 协议的 RESTful API ，只需要通过支持 HTTP 协议客户端软件就可以进行数据操作。这里推荐使用 curl 软件进行数据交互操作，UrnaDB 内部提供了多种数据结构抽象，例如 Table 、Record 、 Variant 、Lock 类型。这些数据类型对应着常见的业务代码所需使用的数据结构，这里以 Tables 类型结构为例进行 RESTful API 数据交互的演示。 Table 结构类似关系数据库 SQL 中的一张表结构，一旦创建完成之后 Table 会为每条记录分配一个全局唯一递增的 t id 索引，Table 的每列可以存储任何有映射关系的半结构化数据，例如编程语言中的 struct 和 class 字段都可以使用 Table 进行存储，下面是一张 Table 结构 Rows 的 JSON 抽象，其中的 t id 为数据库主动分配的自增主键： 下面是 curl 进行数据存储操作的例子，由于是 RESTful API 设计风格，需要在 HTTP 的请求路径 URL 加上数据类型信息。如何数类型新建操作，都需要使用 HTTP 协议的 PUT 方法进行操作，命令如下： 获取数据的方式只需要将 HTTP 的请求改为 GET 方式就会获取得 Key 相应的存储记录，命令如下： 删除对应的数据记录，只需要将 HTTP 的请求改为 DELETE 的方式即可，命令如下： 更多针对数据类型复杂的操作使用示例请查看官方文档。 --- 📦 Java SDK 使用 相较于基于 HTTP 协议的数据交互方式，官方更推荐使用 SDK 来进行操作的，例如使用 Java 语言的 SDK 可以使用 Lambda 函数式编程风格进行数据交互操作。下面是创建一张名为 users 表并且向 users 表中插入一条数据记录，这条操作类似于关系数据库 SQL 中的 INSERT","default_branch":null,"files":null,"tree":[],"storefront":"/r/auula","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/auula/urnadb/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}