A multi-modal vector database that supports upserts and vector queries using unified SQL (MySQL-Compatible) on structured and unstructured data, while meeting the requirements of high concurrency and ultra-low latency.
The addition of distributed transaction capabilities meets the core ACID features of the database, ensuring the integrity and reliability of the database, and expands the range of applications.
1. 计算引擎(Executor):接收基于MySQL协议和DingoDB自有协议的SQL,进行SQL解析、逻辑计划和执行计划生成,对接低层Store存储。
2. 分布式存储引擎(Store):基于C++的高效分布式存储。整个存储层分为元数据存储和数据存储;存储层设计采用灵活扩展的方式,进行多种存储引擎的扩展,如Rocksdb, memory, xdp-rocks等。
3. 支持计算下推操作:为了高效的提升聚合、过滤操作带来的价值,提升计算的效率,存储层支持计算下推的逻辑实现;支持filter,count,sum, min, max等操作。
1. 提供Leader选举机制,支持多节点选举;
2. 提供日志复制,保证了系统的可靠性,有效防止数据丢失。
3. 提供高性能的Raft,采用多线程和异步IO,提高了系统的吞吐量和响应速度。
4. 提供Snapshot机制,用于恢复状态机的状态。能够减少日志的大小,从而提高性能,还可以用于在节点故障时快速恢复状态机的状态。
5. 提供集群扩缩容迁移能力,能够在不影响整个系统的稳定性和一致性前提下更加容易地添加或删除节点。
1. 提供MySQL Shell这种交互式命令行工具,用于高效管理和操作MySQL数据库;同时支持SSL加密,保证数据库的安全性。
2. 提供MySQL JDBC Driver 数据库连接驱动程序, 通过Java应用程序中的JDBC API访问MySQL数据库,用于连接和操作MySQL数据库。
1. 提供可视化监控,涉及grafana监控、http监控,实现集群节点(磁盘、CPU、IO等)、表(分区、Region)、Region监控、raft group监控
2. 提供多种部署方案:单点、docker-compose、ansible多节点部署
3. 提供了集群在线扩容、缩容方案,进行集群扩缩容操作。
1. 支持手动调整日志级别,可以根据实际场景需要灵活地控制日志地详细程度,减少日志文件的大小和存储成本。
2. 优化Store & Dingo Client端错误码
3. 支持C++版本的数据序列化,将序列化后的数据按照序列化时的格式解析,然后将解析后的数据还原为原始数据,
1. 提供Snapshot机制,用于恢复状态机的状态。
2. 支持Region Split,当某个Region超过最大限制,系统自动将其分裂成多个Region,保证各个Region大小接近,有利于进行调度决策。
3. 支持Region Merge,当某个Region因为大量删除导致Region的大小变小是,系统会将较小的两个相邻Region进行合并。
4. 优化了Range范围校验规则,提高代码执行效率,从而缩短数据查询时间,对性能有极大提升。
5. 支持活配置dingo-store服务线程个数,用户可以根据实际场景需要调整线程个数
6. 支持服务在运行时指定故障点(failpoint),方便测试Corner case。
7. 支持Sotre & Region 的Metric信息管理
8. 支持算子计算下推,存储层提供基本的operator,DingoClient作为中间端的桥接器,支持SDK和SQL场景,操作类型如下:
- SUM
- SUM0
- COUNT
- MAX
- MIN
- COUNTWITHNULL
9. 支持自增ID Auto Increment ID,当创建一个具有自增列的表时,DingoDB 自动为插入到表中的每一行分配一个唯一的整数值。通过使用分布式序列生成器确保自增列的值在整个集群中都是唯一的。
1. 重构Executor端架构,Executor端负责计算,用于解析并响应 Client 端 SQL 请求和其他管理请求
2. 兼容MySQL协议
3. 完成Calcite的升级,提高SQL端的执行效率
4. Metric表级信息采集
5. 网络传输层增加task响应机制(STOP/READY/QUIT)
1. 扩展创建表时指定副本数和分区能力信息,附加相关的附属信息。
2. 扩展通过SQL进行Region分裂,实现数据分布管理,使用更加灵活易用。
3. 扩展MySQL协议相关语法
- 支持查看全局/用户/会话变量
- 支持设置全局/用户/会话变量
- 支持查看表结构/指定列的信息
- 支持查看表/用户创建语句
- 支持设置mysql-driver空闲超时时长
- 支持Sql的预处理
SDK为开发人员创建的一组软件工具程序,通过特定API接口对数据库进行操作,开发者能够更加灵活且高效的执行数据库操作,降低学习成本,极大提升开发效率。以下是DingoDB SDK层支持的功能特性:
1. 支持通过DingoDB自研API接口执行Connect集群操作
2. 支持表操作(创建/删除)
3. 支持单条数据操作(查看/插入/删除/修改)
4. 支持批量数据操作(查看/插入/删除/修改)
5. 支持范围过滤后的聚合操作
- SUM
- SUM0
- COUNT
- MAX
- MIN
- COUNTWITHNULL
1. 计算引擎(Executor):接收基于MySQL协议和DingoDB自有协议的SQL,进行SQL解析、逻辑计划和执行计划生成,对接低层Store存储。
2. 分布式存储引擎(Store):基于C++的高效分布式存储。整个存储层分为元数据存储和数据存储;存储层设计采用灵活扩展的方式,进行多种存储引擎的扩展,如Rocksdb, memory, xdp-rocks等。
3. 支持计算下推操作:为了高效的提升聚合、过滤操作带来的价值,提升计算的效率,存储层支持计算下推的逻辑实现;支持filter,count,sum, min, max等操作。
1. 提供Leader选举机制,支持多节点选举;
2. 提供日志复制,保证了系统的可靠性,有效防止数据丢失。
3. 提供高性能的Raft,采用多线程和异步IO,提高了系统的吞吐量和响应速度。
4. 提供Snapshot机制,用于恢复状态机的状态。能够减少日志的大小,从而提高性能,还可以用于在节点故障时快速恢复状态机的状态。
5. 提供集群扩缩容迁移能力,能够在不影响整个系统的稳定性和一致性前提下更加容易地添加或删除节点。
1. 提供MySQL Shell这种交互式命令行工具,用于高效管理和操作MySQL数据库;同时支持SSL加密,保证数据库的安全性。
2. 提供MySQL JDBC Driver 数据库连接驱动程序, 通过Java应用程序中的JDBC API访问MySQL数据库,用于连接和操作MySQL数据库。
1. 提供可视化监控,涉及grafana监控、http监控,实现集群节点(磁盘、CPU、IO等)、表(分区、Region)、Region监控、raft group监控
2. 提供多种部署方案:单点、docker-compose、ansible多节点部署
3. 提供了集群在线扩容、缩容方案,进行集群扩缩容操作。
1. 支持手动调整日志级别,可以根据实际场景需要灵活地控制日志地详细程度,减少日志文件的大小和存储成本。
2. 优化Store & Dingo Client端错误码
3. 支持C++版本的数据序列化,将序列化后的数据按照序列化时的格式解析,然后将解析后的数据还原为原始数据,
1. 提供Snapshot机制,用于恢复状态机的状态。
2. 支持Region Split,当某个Region超过最大限制,系统自动将其分裂成多个Region,保证各个Region大小接近,有利于进行调度决策。
3. 支持Region Merge,当某个Region因为大量删除导致Region的大小变小是,系统会将较小的两个相邻Region进行合并。
4. 优化了Range范围校验规则,提高代码执行效率,从而缩短数据查询时间,对性能有极大提升。
5. 支持活配置dingo-store服务线程个数,用户可以根据实际场景需要调整线程个数
6. 支持服务在运行时指定故障点(failpoint),方便测试Corner case。
7. 支持Sotre & Region 的Metric信息管理
8. 支持算子计算下推,存储层提供基本的operator,DingoClient作为中间端的桥接器,支持SDK和SQL场景,操作类型如下:
- SUM
- SUM0
- COUNT
- MAX
- MIN
- COUNTWITHNULL
9. 支持自增ID Auto Increment ID,当创建一个具有自增列的表时,DingoDB 自动为插入到表中的每一行分配一个唯一的整数值。通过使用分布式序列生成器确保自增列的值在整个集群中都是唯一的。
1. 重构Executor端架构,Executor端负责计算,用于解析并响应 Client 端 SQL 请求和其他管理请求
2. 兼容MySQL协议
3. 完成Calcite的升级,提高SQL端的执行效率
4. Metric表级信息采集
5. 网络传输层增加task响应机制(STOP/READY/QUIT)
1. 扩展创建表时指定副本数和分区能力信息,附加相关的附属信息。
2. 扩展通过SQL进行Region分裂,实现数据分布管理,使用更加灵活易用。
3. 扩展MySQL协议相关语法
- 支持查看全局/用户/会话变量
- 支持设置全局/用户/会话变量
- 支持查看表结构/指定列的信息
- 支持查看表/用户创建语句
- 支持设置mysql-driver空闲超时时长
- 支持Sql的预处理
SDK为开发人员创建的一组软件工具程序,通过特定API接口对数据库进行操作,开发者能够更加灵活且高效的执行数据库操作,降低学习成本,极大提升开发效率。以下是DingoDB SDK层支持的功能特性:
1. 支持通过DingoDB自研API接口执行Connect集群操作
2. 支持表操作(创建/删除)
3. 支持单条数据操作(查看/插入/删除/修改)
4. 支持批量数据操作(查看/插入/删除/修改)
5. 支持范围过滤后的聚合操作
- SUM
- SUM0
- COUNT
- MAX
- MIN
- COUNTWITHNULL
序号 | 函数 | 说明 |
---|---|---|
1 | Scan | 扫描表中数据 |
2 | Get | 读取表中数据 |
3 | Filter | 根据条件过滤数据 |
4 | Add | 对列进行数值加操作 |
5 | Put | 向表中写入数据 |
6 | Update | 修改表中数据 |
7 | Delete | 删除表中数据 |
8 | DeleteRange | 范围删除表中数据 |
9 | Max | 对列与输入求最大值 |
10 | Min | 对列与输入求最小值 |
11 | Avg | 对列与输入求平均数 |
12 | Sum | 对列与输入求和 |
13 | Count | 计算记录条数 |
14 | SortList | 对输入的数值和已存储的数值按照数值大小进行排序,默认升序 |
15 | DistinctList | 对输入的数值和已存储的数值执行去重操作,对重复的数值只纪录一次 |
16 | List | 列表,基于输入的数值和已存储的数值,根据条件返回List结果 |
17 | IncreaseCount | 递增次数,序列中,存在相邻两点递增,统计相邻递增的次数 |
18 | DecreaseCount | 递减次数,序列中,存在相邻两点递减,统计相邻递减的次数 |
19 | maxIncreaseCount | 最大递增,序列中,每次连续递增中产生的递增次数的最大值 |
20 | maxDecreaseCount | 最大递减,序列中,每次连续递减中产生的递减次数的最大值 |
序号 | 函数 | 说明 |
---|---|---|
1 | Scan | 扫描表中数据 |
2 | Get | 读取表中数据 |
3 | Filter | 根据条件过滤数据 |
4 | Add | 对列进行数值加操作 |
5 | Put | 向表中写入数据 |
6 | Update | 修改表中数据 |
7 | Delete | 删除表中数据 |
8 | DeleteRange | 范围删除表中数据 |
9 | Max | 对列与输入求最大值 |
10 | Min | 对列与输入求最小值 |
11 | Avg | 对列与输入求平均数 |
12 | Sum | 对列与输入求和 |
13 | Count | 计算记录条数 |
14 | SortList | 对输入的数值和已存储的数值按照数值大小进行排序,默认升序 |
15 | DistinctList | 对输入的数值和已存储的数值执行去重操作,对重复的数值只纪录一次 |
16 | List | 列表,基于输入的数值和已存储的数值,根据条件返回List结果 |
17 | IncreaseCount | 递增次数,序列中,存在相邻两点递增,统计相邻递增的次数 |
18 | DecreaseCount | 递减次数,序列中,存在相邻两点递减,统计相邻递减的次数 |
19 | maxIncreaseCount | 最大递增,序列中,每次连续递增中产生的递增次数的最大值 |
20 | maxDecreaseCount | 最大递减,序列中,每次连续递减中产生的递减次数的最大值 |
No | Function Name | Description about Function |
---|---|---|
1 | pow(x,y) | The POW() function returns the value of a number raised to the power of another number |
2 | round(x,y) | The ROUND() function rounds a number to a specified number of decimal places |
3 | ceiling(x) | The CEILING() function returns the smallest integer value that is bigger than or equal to a number |
4 | floor(x) | The FLOOR() function returns the largest integer value that is smaller than or equal to a number |
5 | mod(x,y) | The MOD() function returns the remainder of a number divided by another number |
6 | abs(x) | The ABS() function returns the absolute (positive) value of a number. |
No | Function Name | Description about Function |
---|---|---|
1 | put | insert or update records in table |
2 | get | query records by user key |
3 | delete | delete records by user key |
No | Funcation Name | Description about Function |
---|---|---|
1 | add | add values on same data type |
2 | sum | calculate the summary of columns filtered by keys |
3 | max | calculate the max of columns filtered by keys |
4 | min | calculate the min of columns filtered by keys |
No | Function Name | Description about Function |
---|---|---|
1 | Operate | do multiple operations on a single record, the operation list can be numerical operation or basic operation |
2 | OperateList | do multiple operations on a single record |
3 | UDF | defined using LUA script to implement user define function |
No | Type | Function Name | Description about Function |
---|---|---|---|
1 | read | size | get size of the elements |
2 | read | get_all | get all the elements of collection |
3 | read | get_by_key | get all the elements of collection by input key |
4 | read | get_by_value | get all the elements of collection by input value |
5 | read | get_by_index_range | get all the elements of collection by range index |
6 | write | put | append a element to the end |
7 | write | clear | clear all the elements of collection |
8 | write | remove_by_key | remove the key from collection |
9 | write | remove_all_by_value | remove all records match the value |
10 | write | remove_by_index | remove record by index |
Query records using range filter with Date
type.
Query records using range filter with Numberic type.
Query records using range filter with String type
Query records with specifiy record value.
sofa-jraft
io.dingodb.
on maven centraltimeout
explain
to view plan about Dingo SQLNo | Module | Description about module |
---|---|---|
1 | dingo-driver-client | the jdbc driver client used by sql |
2 | dingo-sdk | the key-value sdk client to do operation about key-value |
3 | dingo-rocksdb | Extended features on rocksdb |
No | Function Name | Description about Function |
---|---|---|
1 | pow(x,y) | The POW() function returns the value of a number raised to the power of another number |
2 | round(x,y) | The ROUND() function rounds a number to a specified number of decimal places |
3 | ceiling(x) | The CEILING() function returns the smallest integer value that is bigger than or equal to a number |
4 | floor(x) | The FLOOR() function returns the largest integer value that is smaller than or equal to a number |
5 | mod(x,y) | The MOD() function returns the remainder of a number divided by another number |
6 | abs(x) | The ABS() function returns the absolute (positive) value of a number. |
No | Function Name | Description about Function |
---|---|---|
1 | put | insert or update records in table |
2 | get | query records by user key |
3 | delete | delete records by user key |
No | Funcation Name | Description about Function |
---|---|---|
1 | add | add values on same data type |
2 | sum | calculate the summary of columns filtered by keys |
3 | max | calculate the max of columns filtered by keys |
4 | min | calculate the min of columns filtered by keys |
No | Function Name | Description about Function |
---|---|---|
1 | Operate | do multiple operations on a single record, the operation list can be numerical operation or basic operation |
2 | OperateList | do multiple operations on a single record |
3 | UDF | defined using LUA script to implement user define function |
No | Type | Function Name | Description about Function |
---|---|---|---|
1 | read | size | get size of the elements |
2 | read | get_all | get all the elements of collection |
3 | read | get_by_key | get all the elements of collection by input key |
4 | read | get_by_value | get all the elements of collection by input value |
5 | read | get_by_index_range | get all the elements of collection by range index |
6 | write | put | append a element to the end |
7 | write | clear | clear all the elements of collection |
8 | write | remove_by_key | remove the key from collection |
9 | write | remove_all_by_value | remove all records match the value |
10 | write | remove_by_index | remove record by index |
Query records using range filter with Date
type.
Query records using range filter with Numberic type.
Query records using range filter with String type
Query records with specifiy record value.
sofa-jraft
io.dingodb.
on maven centraltimeout
explain
to view plan about Dingo SQLNo | Module | Description about module |
---|---|---|
1 | dingo-driver-client | the jdbc driver client used by sql |
2 | dingo-sdk | the key-value sdk client to do operation about key-value |
3 | dingo-rocksdb | Extended features on rocksdb |
No | Function Names | Notes about Function |
---|---|---|
1 | Concat | Adds two or more expressions together |
2 | Format | Formats a number to a format like "#,###,###.##", rounded to a specified number of decimal places |
3 | Locate | The LOCATE() function returns the position of the first occurrence of a substring in a string |
4 | Lower | Converts a string to lower-case |
5 | Lcase | Converts a string to lower-case |
6 | Upper | Converts a string to upper-case |
7 | Ucase | Converts a string to upper-case |
8 | Left | Extracts a number of characters from a string (starting from left) |
9 | Right | Extracts a number of characters from a string (starting from right) |
10 | Repeat | Repeats a string as many times as specified |
11 | Replace | Replaces all occurrences of a substring within a string, with a new substring |
12 | Trim | Removes leading and trailing spaces from a string |
13 | Ltrim | Removes leading spaces from a string |
14 | Rtrim | Removes trailing spaces from a string |
15 | Mid | Extracts a substring from a string (starting at any position) |
16 | Substring | Extracts a substring from a string (starting at any position) |
17 | Reverse | Reverses a string and returns the result |
No | Function Names | Notes about Function |
---|---|---|
1 | Now | Return current date and time |
2 | CurrentDate | Return the current date |
3 | Current_date | Return the current date |
4 | CurTime | Return the current time |
5 | Current_time | Return the current time |
6 | Current_timestamp | Return the current date and time |
7 | From_UnixTime | Convert unix time to timestamp |
8 | Unix_Timestamp | Format the time to unix timestamp |
9 | Date_Format | Formats a date |
10 | DateDiff | Returns the number of days between two date values |
11 | Time_Format | Formats a time by a specified format |
No | Function Names | Notes about Function |
---|---|---|
1 | Concat | Adds two or more expressions together |
2 | Format | Formats a number to a format like "#,###,###.##", rounded to a specified number of decimal places |
3 | Locate | The LOCATE() function returns the position of the first occurrence of a substring in a string |
4 | Lower | Converts a string to lower-case |
5 | Lcase | Converts a string to lower-case |
6 | Upper | Converts a string to upper-case |
7 | Ucase | Converts a string to upper-case |
8 | Left | Extracts a number of characters from a string (starting from left) |
9 | Right | Extracts a number of characters from a string (starting from right) |
10 | Repeat | Repeats a string as many times as specified |
11 | Replace | Replaces all occurrences of a substring within a string, with a new substring |
12 | Trim | Removes leading and trailing spaces from a string |
13 | Ltrim | Removes leading spaces from a string |
14 | Rtrim | Removes trailing spaces from a string |
15 | Mid | Extracts a substring from a string (starting at any position) |
16 | Substring | Extracts a substring from a string (starting at any position) |
17 | Reverse | Reverses a string and returns the result |
No | Function Names | Notes about Function |
---|---|---|
1 | Now | Return current date and time |
2 | CurrentDate | Return the current date |
3 | Current_date | Return the current date |
4 | CurTime | Return the current time |
5 | Current_time | Return the current time |
6 | Current_timestamp | Return the current date and time |
7 | From_UnixTime | Convert unix time to timestamp |
8 | Unix_Timestamp | Format the time to unix timestamp |
9 | Date_Format | Formats a date |
10 | DateDiff | Returns the number of days between two date values |
11 | Time_Format | Formats a time by a specified format |