KarelDB是一款功能齐全的关系数据库,它几乎完全基于开源组件构建,包括用于SQL引擎的ApacheCalcite以及用于事务和控制功能的ApacheOmid,并由应用广泛的ApacheKafka流处理软件提供支持。
获取方法Mave<depedecy><groupId>io.kareldb</groupId><artifactId>kareldb-core</artifactId><versio>0.1.6</versio></depedecy>使用方法服务器模式(ServerMode)如需运行 KarelDB,先下载一份 release 版本进行解压,然后修改cofig/kareldb.properties以指向现有的Kafkabroker,接着运行以下命令:
$bi/kareldb-startcofig/kareldb.properties在单独的终端上,输入以下命令来启动sqllie,这是用于访问JDBC数据库的命令行程序。
$bi/sqlliesqllieversio1.8.0sqllie>!coectjdbc:avatica:remote:url=https://localhost:8765admiadmisqllie>createtablebooks(idit,amevarchar,authorvarchar);Norowsaffected(0.114secods)sqllie>isertitobooksvalues(1,'TheTrial','FrazKafka');1rowaffected(0.576secods)sqllie>select*frombooks;+----+-----------+-------------+|ID|NAME|AUTHOR|+----+-----------+-------------+|1|TheTrial|FrazKafka|+----+-----------+-------------+1rowselected(0.133secods)要从远程应用程序访问KarelDB服务器,请使用AvaticaJDBC客户端。可以在此处找到AvaticaJDBC客户端列表。
嵌入模式(EmbeddedMode)KarelDB也可以在嵌入模式中使用。例子如下:
Propertiesproperties=ewProperties();properties.put("schemaFactory","io.kareldb.schema.SchemaFactory);properties.put("parserFactory","org.apache.calcite.sql.parser.parserextesio.ExtesioSqlParserImpl#FACTORY");properties.put("schema.kid","io.kareldb.kafka.KafkaSchema");properties.put("schema.kafkacache.bootstrap.servers",bootstrapServers);properties.put("schema.rocksdb.root.dir","/tmp");try(Coectioco=DriverMaager.getCoectio("jdbc:kareldb:",properties);Statemets=co.createStatemet()){s.execute("createtablebooks(idit,amevarchar,authorvarchar)");s.executeUpdate("isertitobooksvalues(1,'TheTrial','FrazKafka')");ResultSetrs=s.executeQuery("select*frombooks");...}支持ANSISQLKarelDB可通过使用 Calcite 支持ANSISQL。
当创建表时,在各列之后指定主键约束,如下所示:
CREATETABLEcustomers(idit,amevarchar,costraitpkprimarykey(id));如果未指定主键约束,则表中的第一列将被指定为主键。
KarelDB通过添加对ALTERTABLE命令的支持来扩展Calcite的SQL语法。alterTableStatemet:ALTERTABLEtableNamecolumActio[,columActio]*columActio:(ADDtableElemet)|(DROPcolumName)KarelDB支持以下SQL类型:
booleaitegerbigitrealdoublevarbiaryvarchardecimaldatetimetimestamp
评论