注意:JasDB 目前处于低维护模式,不会收到任何进一步的重大更新
JasDB是一个开放的基于文档的数据库,可用于存储非结构化数据。该数据库可以独立使用,并通过 java 客户机库或 REST 接口进行访问。
此外,该数据库还可以用于Java应用程序的进程,非常适合需要小型轻量级数据库的嵌入式项目(包括在Android上)。
特征
JasDB具有以下功能:
- 轻量级内存和 CPU 配置文件
- 单台机器上的高吞吐量
- 完整的查询功能
- B树索引结构
- REST Webservice
- 安卓支持
- Java 客户机 API(用于远程和本地嵌入式模式)
文档
有关更多信息,请查看 http://www.oberasoftware.com
用于安装和 API 使用的 Wiki:https://github.com/oberasoftware/jasdb-open/wiki Javadoc:http://oberasoftware.github.io/jasdb/apidocs/
注意:上述文档适用于 JasDB 的当前 LTS 版本,当前主分支指向版本 2.0,这将破坏 API 上的兼容性(而不是数据格式)。
快速安装
- 通过解压缩下载来安装 JasDB
- 使用启动.bat或 start.sh 启动数据库
- 打开 http://localhost:7050
有关更多详细信息,请参阅此处:https://github.com/oberasoftware/jasdb-open/wiki/Installing-and-configuring-JasDB
使用 Docker 运行
我们有一个可用的 Docker 容器,可让您非常快速地获得正在运行的 JasDB 安装。
要运行标准 Docker 容器:
docker run -d -p 7050:7050 renarj/jasdb:1.1.2
但是,我们建议在单独的卷中运行 jasdb 数据目录,例如,将以下内容附加到主机卷
docker run -v /Users/devuser/dev/docker/volumes/jasdb-data:/jasdb-data -p 7050:7050 renarj/jasdb:1.1.2
具有对象映射的 Java 示例
在JasDB中,我们有一个可用的对象映射器,它允许您使用常规Java对象执行快速操作。您所要做的就是在 Java Bean 之上添加一些注释。
示例豆:
@JasDBEntity(bagName = "TEST_BAG") public class TestEntity { private String id; private String firstName; private String lastName; @Id @JasDBProperty public String getId() { return id; } public void setId(String id) { this.id = id; } @JasDBProperty public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } @JasDBProperty public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
以下代码可用于持久保存这些 Bean:
DBSession session = new LocalDBSession(); //new RestDBSession(); EntityManager entityManager = session.getEntityManager(); TestEntity entity = new TestEntity(null, "Renze", "de Vries"); String id = entityManager.persist(entity).getInternalId();
以下可用于从数据库中查询和检索实体
DBSession session = new LocalDBSession(); //new RestDBSession(); EntityManager entityManager = session.getEntityManager(); TestEntity foundEntity = entityManager.findEntity(TestEntity.class, id); //This will find all entities List<TestEntity> allEntities = entityManager.findEntities(TestEntity.class, QueryBuilder.createBuilder()); //Get all people named Piet QueryBuilder query = QueryBuilder.createBuilder().field("firstName").value("Piet"); List<TestEntity> peopleNamedPiet = entityManager.findEntities(TestEntity.class, query);
有关实体映射的更多详细信息,请在wiki上查看此页面:https://github.com/oberasoftware/jasdb-open/wiki/Object-Entity-Mapping-API
常规 Java 客户机示例
除了使用对象映射器之外,您还可以使用JasDB对象模型,该模型允许对数据本身进行更精细的控制。此外,API 还提供了更多操作来创建索引和其他数据库操作。
有关如何插入和检索数据的示例:
//Open DB Session DBSession session = new LocalDBSession(); EntityBag bag = session.createOrGetBag("MyBag"); //Insert some data SimpleEntity entity = new SimpleEntity(); entity.addProperty("title", "Title of my content"); entity.addProperty("text", "Some big piece of text content"); bag.addEntity(entity); //Retrieve entity by Id SimpleEntity e = bag.getEntity("056f8058-e1f7-4f8e-a2f8-332e62c15961"); //Query the DB QueryExecutor executor = bag.find(QueryBuilder.createBuilder().field("field").value(queryKey)); QueryResult result = executor.execute(); for(SimpleEntity entity : result) { //access the properties if desired entity.getProperty("field1"); }
欲了解更多信息:
- 维基: https://github.com/oberasoftware/jasdb-open/wiki/Java-Client-API
- JavaDoc API: http://oberasoftware.github.io/jasdb/apidocs/
许可证
本软件符合 MIT X11 许可证: 版权所有 (c) 2014 Obera 软件
特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地处理本软件的许可,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许向其提供本软件的人员这样做, 须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。
本软件按“原样”提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途的适用性和不侵权的担保。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为还是其他诉讼中,均由本软件或本软件的使用或其他交易引起、引起或与之相关。
上述 MIT X11 许可证还有一项附加要求:以源代码或二进制形式重新分发本软件,本软件的接收者应免费收取任何费用或费用。