1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-KarelDB

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

KarelDB — реляционная база данных, поддерживаемая Apache Kafka

Build Status Maven Javadoc

KarelDB представляет собой полнофункциональную реляционную базу данных, которая поддерживается Apache Kafka.

Maven

Релизы KarelDB размещаются в Maven Central.

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

Режим сервера

Чтобы запустить KarelDB, скачайте релиз с GitHub, распакуйте его и измените файл config/kareldb.properties, чтобы он указывал на существующего брокера Kafka. Затем выполните следующую команду:

$ bin/kareldb-start config/kareldb.properties

В отдельном терминале введите следующую команду, чтобы запустить sqlline, утилиту командной строки для доступа к базам данных JDBC.

$ bin/sqlline
sqlline version 1.9.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 можно найти здесь.

Если несколько серверов KarelDB настроены с одним и тем же идентификатором группы кластеров (см. раздел «Конфигурация»), они образуют кластер, и один из них будет выбран в качестве лидера, а остальные станут последователями (репликами). Если последователь получает запрос, он будет перенаправлен лидеру. Если лидер выходит из строя, один из последователей будет избран новым лидером.

Встроенный режим

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.kafkacache.data.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 поддерживает ANSI SQL с использованием Calcite. При создании таблицы ограничение первичного ключа должно быть указано после столбцов следующим образом:

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

Если ограничение первичного ключа не указано, первый столбец в таблице будет назначен первичным ключом.

KarelDB расширяет грамматику SQL Calcite, добавляя поддержку команд ALTER TABLE.

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

KarelDB поддерживает следующие типы SQL: — boolean — integer — bigint — real — double Омид (https://omid.incubator.apache.org) — для управления транзакциями и поддержки многоверсионности конкурентных данных (MVCC).

Apache Avatica (https://calcite.apache.org/avatica/) — для функциональности JDBC.

Подробнее о дизайне KarelDB можно узнать из этого блога (https://yokota.blog/2019/09/23/building-a-relational-database-using-kafka).

Future Enhancements

Возможные улучшения в будущем включают поддержку вторичных индексов.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

KarelDB — это полнофункциональная реляционная база данных, которая почти полностью построена на основе открытых исходных компонентов, включая Apache Calcite для SQL-движка и Apache Omid для транзакций и управления. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-KarelDB.git
git@api.gitlife.ru:oschina-mirror/mirrors-KarelDB.git
oschina-mirror
mirrors-KarelDB
mirrors-KarelDB
master