开源关系数据库 KarelDB

Apache-2.0
Java 查看源码»
跨平台
2019-10-10
局长

KarelDB 是一款功能齐全的关系数据库,它几乎完全基于开源组件构建,包括用于 SQL 引擎的 Apache Calcite 以及用于事务和控制功能的 Apache Omid,并由应用广泛的 Apache Kafka 流处理软件提供支持。

获取方法

Maven

<dependency>
    <groupId>io.kareldb</groupId>
    <artifactId>kareldb-core</artifactId>
    <version>0.1.6</version>
</dependency>

使用方法

服务器模式(Server Mode)

如需运行 KarelDB,先下载一份 release 版本进行解压,然后修改config/kareldb.properties以指向现有的 Kafka broker,接着运行以下命令:

$ bin/kareldb-start config/kareldb.properties

在单独的终端上,输入以下命令来启动sqlline,这是用于访问 JDBC 数据库的命令行程序。

$ bin/sqlline
sqlline version 1.8.0

sqlline> !connect jdbc:avatica:remote:url=http://localhost:8765 admin admin

sqlline> create table books (id int, name varchar, author varchar);
No rows affected (0.114 seconds)

sqlline> insert into books values (1, 'The Trial', 'Franz Kafka');
1 row affected (0.576 seconds)

sqlline> select * from books;
+----+-----------+-------------+
| ID |   NAME    |   AUTHOR    |
+----+-----------+-------------+
| 1  | The Trial | Franz Kafka |
+----+-----------+-------------+
1 row selected (0.133 seconds)

要从远程应用程序访问 KarelDB 服务器,请使用 Avatica JDBC 客户端。可以在此处找到 Avatica JDBC 客户端列表。

嵌入模式(Embedded Mode)

KarelDB 也可以在嵌入模式中使用。例子如下:

Properties properties = new Properties();
properties.put("schemaFactory", "io.kareldb.schema.SchemaFactory);
properties.put("parserFactory", "org.apache.calcite.sql.parser.parserextension.ExtensionSqlParserImpl#FACTORY");
properties.put("schema.kind", "io.kareldb.kafka.KafkaSchema");
properties.put("schema.kafkacache.bootstrap.servers", bootstrapServers);
properties.put("schema.rocksdb.root.dir", "/tmp");

try (Connection conn = DriverManager.getConnection("jdbc:kareldb:", properties);
     Statement s = conn.createStatement()) {
        s.execute("create table books (id int, name varchar, author varchar)");
        s.executeUpdate("insert into books values(1, 'The Trial', 'Franz Kafka')");
        ResultSet rs = s.executeQuery("select * from books");
        ...
}

支持 ANSI SQL

KarelDB 可通过使用 Calcite 支持 ANSI SQL。

当创建表时,在各列之后指定主键约束,如下所示:

CREATE TABLE customers 
    (id int, name varchar, constraint pk primary key (id));

如果未指定主键约束,则表中的第一列将被指定为主键。

KarelDB 通过添加对 ALTER TABLE 命令的支持来扩展 Calcite 的 SQL 语法。

alterTableStatement:
    ALTER TABLE tableName columnAction [ , columnAction ]*
    
columnAction:
    ( ADD tableElement ) | ( DROP columnName )

KarelDB 支持以下 SQL 类型:

  • boolean
  • integer
  • bigint
  • real
  • double
  • varbinary
  • varchar
  • decimal
  • date
  • time
  • timestamp
的码云指数为
超过 的项目
加载中

评论(3)

xiaoshiyue
xiaoshiyue
👍🏻

Kafka “孕育”了一款开源关系数据库:KarelDB

Java 开发者对 Apache Kafka 应该不会感到陌生,这是一个分布式的发布订阅消息系统,作为一个非常重要的开源项目,它已经被许多公司以及产品用作关键组件。Kafka 及其配套的 Key-Value 存储系...

10/10 08:17

没有更多内容

加载失败,请刷新页面

没有更多内容

4
回答
【一周】Vue 3 | Java 14 | Unix之父密码被破解 | 人类至暗时期的操作系统

回顾一周社区热门资讯 第【四十三】期:20191005-20191011 点击相应标题,跳转阅读全文。 Chrome 将不再允许 https:// 页面加...

10/13 07:21

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无博客

返回顶部
顶部