支持的数据源
数据源支持列表
DataBars 采用插件化架构设计,通过插件方式加载数据源。这种设计使得系统具有高度的扩展性,理论上可以支持任何类型的数据源。当需要添加新的数据源支持时,只需开发相应的插件即可集成到系统中。
| 名称 | 是否支持 |
|---|---|
| Mysql | Yes |
| MariaDB | Yes |
| PostgreDB | Yes |
| H2 | Yes |
| Mongo | Yes |
| Redis | Yes |
| Oracle | 开发中 |
| SqlServer | 开发中 |
| GuassDB | 开发中 |
| Dameng | 开发中 |
| DB2 | 开发中 |
| PrestoSQL | 开发中 |
| Trino | 开发中 |
| Nebula | 开发中 |
| Tidb | 开发中 |
| ES | 开发中 |
| Kafka | 开发中 |
数据源语法支持
Mysql
MySQL支持使用SQL(结构化查询语言)查询, 是执行数据库操作的标准语言。通常分为 DDL、 DML和 查询三大类。MySQL 还包含一些其他语句类别,例如 复制。 有关SQL 语法的构成要素,请参阅:Mysql SQL 官方文档 。
- DDL(数据定义语言) 用于定义数据库、表、视图、索引等数据库对象。常见的 DDL 语句有:
CREATE:创建数据库、表等对象。sqlCREATE DATABASE test_db; CREATE TABLE users (id INT, name VARCHAR(50));ALTER:修改数据库、表等对象的结构。sqlALTER TABLE users ADD COLUMN age INT;DROP:删除数据库、表等对象。sqlDROP TABLE users;
- DML(数据操作语言) 用于对数据库中的数据进行增、删、改操作。常见的 DML 语句有:
INSERT:向表中插入数据。sqlINSERT INTO users (id, name, age) VALUES (1, 'Alice', 25);UPDATE:修改表中的数据。sqlUPDATE users SET age = 26 WHERE id = 1;DELETE:删除表中的数据。sqlDELETE FROM users WHERE id = 1;
- 查询语句 用于从数据库中检索数据。常见的查询语句有:
SELECT:基本查询语句。sqlSELECT * FROM users;- 带条件查询:使用
WHERE子句筛选数据。sqlSELECT * FROM users WHERE age > 20; - 排序查询:使用
ORDER BY子句对结果排序。sqlSELECT * FROM users ORDER BY age DESC;
- 复制相关语句 MySQL 中的复制用于实现数据的备份和读写分离等功能。常见的复制相关语句有:
CHANGE MASTER TO:配置主从复制参数。sqlCHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='replication_user', MASTER_PASSWORD='password';START SLAVE:启动从服务器复制进程。sqlSTART 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 / 2Redis的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