Skip to content

支持的数据源

数据源支持列表

DataBars 采用插件化架构设计,通过插件方式加载数据源。这种设计使得系统具有高度的扩展性,理论上可以支持任何类型的数据源。当需要添加新的数据源支持时,只需开发相应的插件即可集成到系统中。

名称是否支持
MysqlYes
MariaDBYes
PostgreDBYes
H2Yes
MongoYes
RedisYes
Oracle开发中
SqlServer开发中
GuassDB开发中
Dameng开发中
DB2开发中
PrestoSQL开发中
Trino开发中
Nebula开发中
Tidb开发中
ES开发中
Kafka开发中

数据源语法支持

Mysql

MySQL支持使用SQL(结构化查询语言)查询, 是执行数据库操作的标准语言。通常分为 DDL、 DML和 查询三大类。MySQL 还包含一些其他语句类别,例如 复制。 有关SQL 语法的构成要素,请参阅:Mysql SQL 官方文档

  1. DDL(数据定义语言) 用于定义数据库、表、视图、索引等数据库对象。常见的 DDL 语句有:
  • CREATE:创建数据库、表等对象。
    sql
    CREATE DATABASE test_db;
    CREATE TABLE users (id INT, name VARCHAR(50));
  • ALTER:修改数据库、表等对象的结构。
    sql
    ALTER TABLE users ADD COLUMN age INT;
  • DROP:删除数据库、表等对象。
    sql
    DROP TABLE users;
  1. DML(数据操作语言) 用于对数据库中的数据进行增、删、改操作。常见的 DML 语句有:
  • INSERT:向表中插入数据。
    sql
    INSERT INTO users (id, name, age) VALUES (1, 'Alice', 25);
  • UPDATE:修改表中的数据。
    sql
    UPDATE users SET age = 26 WHERE id = 1;
  • DELETE:删除表中的数据。
    sql
    DELETE FROM users WHERE id = 1;
  1. 查询语句 用于从数据库中检索数据。常见的查询语句有:
  • SELECT:基本查询语句。
    sql
    SELECT * FROM users;
  • 带条件查询:使用 WHERE 子句筛选数据。
    sql
    SELECT * FROM users WHERE age > 20;
  • 排序查询:使用 ORDER BY 子句对结果排序。
    sql
    SELECT * FROM users ORDER BY age DESC;
  1. 复制相关语句 MySQL 中的复制用于实现数据的备份和读写分离等功能。常见的复制相关语句有:
  • CHANGE MASTER TO:配置主从复制参数。
    sql
    CHANGE MASTER TO 
        MASTER_HOST='master_host',
        MASTER_USER='replication_user',
        MASTER_PASSWORD='password';
  • START SLAVE:启动从服务器复制进程。
    sql
    START SLAVE;

MariaDB

同 Mysql 一样

Redis

Redis采用Lua语言作为其脚本执行环境,这一设计使得用户可以在Redis服务器端执行复杂的多命令操作,同时保证原子性执行。Lua脚本在Redis中的应用提供了强大的数据处理能力,同时保持了执行的高效性

基本语法结构 Redis中的Lua脚本遵循标准的Lua语法,但增加了一些Redis特定的功能:

示例1:计算两个键的和

lua
-- 示例脚本:计算两个键的和
local key1 = KEYS[1]
local key2 = KEYS[2]
local val1 = redis.call('GET', key1)
local val2 = redis.call('GET', key2)
return val1 + val2

示例2:实现计数器功能

lua
-- 示例脚本:实现计数器功能
local key = KEYS[1]
local increment = tonumber(ARGV[1]) or 1
local current = tonumber(redis.call('GET', key) or '0')
local result = current + increment
redis.call('SET', key, result)
return result

示例3:批量设置多个键值对

lua
-- 示例脚本:批量设置多个键值对
for i = 1, #KEYS, 2 do
    local key = KEYS[i]
    local value = KEYS[i+1]
    redis.call('SET', key, value)
end
return #KEYS / 2

Redis Lua 脚本官网

Redis的Lua脚本功能为复杂的数据操作提供了强大的工具,同时保持了Redis简洁高效的设计理念。

MongoDB

MongoDB使用JavaScript作为其查询语言,提供了强大的脚本执行能力。MongoDB Shell是MongoDB的交互式JavaScript环境,允许用户执行各种数据库操作。

基本查询语法

1. 简单查询

javascript
// 查找所有文档
db.collection.find()

// 查找特定字段匹配的文档
db.collection.find({ field: "value" })

2. 条件查询

javascript
// 查找age大于18的文档
db.collection.find({ age: { $gt: 18 } })

// 查找age大于等于18且小于30的文档
db.collection.find({ age: { $gte: 18, $lt: 30 } })

// 查找name为Alice或Bob的文档
db.collection.find({ name: { $in: ["Alice", "Bob"] } })

3. 投影查询

javascript
// 只返回name字段,不返回_id字段
db.collection.find({}, { name: 1, _id: 0 })

// 返回name和age字段,不返回_id字段
db.collection.find({}, { name: 1, age: 1, _id: 0 })

4. 排序查询

javascript
// 按age字段升序排序
db.collection.find().sort({ age: 1 })

// 按age字段降序排序
db.collection.find().sort({ age: -1 })

5. 限制查询结果数量

javascript
// 只返回前5个文档
db.collection.find().limit(5)

// 跳过前5个文档,返回接下来的10个文档
db.collection.find().skip(5).limit(10)

6. 聚合查询

javascript
// 按age字段分组,计算每个年龄的文档数量
db.collection.aggregate([
  { $group: { _id: "$age", count: { $sum: 1 } } }
])

// 计算所有文档的平均年龄
db.collection.aggregate([
  { $group: { _id: null, avgAge: { $avg: "$age" } } }
])

H2

H2 是一个轻量级的开源嵌入式关系型数据库,用 Java 编写,支持内存模式和持久化模式,提供标准 SQL 语法支持。

基本 SQL 示例

sql
-- 创建表
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));

-- 插入数据
INSERT INTO users VALUES (1, 'Alice');

-- 查询数据
SELECT * FROM users;

连接方式

  • 内存模式:jdbc:h2:mem:test
  • 持久化模式:jdbc:h2:~/test
  • 服务器模式:jdbc:h2:tcp://localhost/~/test

H2 官方文档

浙ICP备2025189648号-1