StoneDB 是一个兼容 MySQL 的高性能混合事务/分析处理(HTAP)数据库。它为 MySQL 提供了分析处理(AP)能力。运行中的系统可以无缝地迁移到 StoneDB,而无需更改任何代码。与 InnoDB 相比,StoneDB 提供了 10 倍的查询性能和 10 倍的加载性能。StoneDB 还提供 10:1 到 40:1 的压缩比。
概览
架构图 2.0
想获取更多关于 StoneDB 的信息,可以前往官网:stonedb.io。
StoneDB 社区欢迎各种各样的贡献,如为代码库贡献代码,分享您如何使用StoneDB的经验,并在论坛上在社区中提供见解,或贡献项目,使 StoneDB 成为一个更好的开源项目。想获取更多的细节,可以看这里:贡献指南。
入门部分提供了关于StoneDB支持的平台,安装(包括创建您的第一个表),以及从运行的MySQL数据库迁移到StoneDB的信息。
目前我们支持以下操作系统平台:
- CentOS 7.x 及以上
- Ubuntu 20.04 及以上
- Red Hat Enterprise Linux 7 (RHEL 7.x)
我们用来验证构建的编译器工具集:
- GCC 9.3.0
以下是我们用来验证构建的包:
- Make 3.82 or later
- CMake 3.7.2 or later
- marisa 0.77
- RocksDB 6.12.6
- Boost 1.66
更多信息,可以查看 Compile StoneDB on Ubuntu 20.04。
更多信息,可以查看 Compile StoneDB on CentOS 7。
更多信息,可以查看 Compile StoneDB on RHEL 7。
更多信息,可以查看 Compile StoneDB in a Docker Container。
StoneDB安装完成后,您至少需要在 my.cnf
文件中配置以下参数:
#the stonedb configuration options are listed as following.
#for an example.
[mysqld]
# 如果是5.7及以后的版本,引擎设置为tianmu
default-storage-engine=tianmu
# 如果是5.6版本,引擎要设置为stonedb
# default-storage-engine=stonedb
binlog-format=STATEMENT
# 对于 5.6 版本
cd /path/to/your/path/bin && ./mysql_install_db --basedir=/stonedb/install/ --datadir=/stonedb/install/data/ --user=mysql
# 对于 5.7 及以后的版本
cd /path/to/your/path/bin && ./mysqld --initialize --basedir=/stonedb/install/ --datadir=/stonedb/install/data/ --user=mysql
mysqld_safe --defaults-file=/path/to/my.cnf --user=mysql &
--The example code for creating a table with 'tianmu' engine.(For version 5.7 or later)
CREATE TABLE `example_table` (
`id1` bigint(20) NOT NULL DEFAULT '0',
`id1_type` int(10) NOT NULL DEFAULT '0',
`id2` bigint(20) NOT NULL DEFAULT '0',
`id2_type` int(10) NOT NULL DEFAULT '0',
`data` varchar(255) NOT NULL DEFAULT '',
`time` bigint(20) NOT NULL DEFAULT '0',
`version` int(11) NOT NULL DEFAULT '0',
) ENGINE=tianmu;
-- For version 5.6, the engine should be set to 'stonedb'
这个例子展示了 StoneDB 中的一些重要特性和限制。有关限制的更多信息,请参见 StoneDB Limitations。
- StoneDB 数据以列格式存储,并持久化到 RocksDB 中,RocksDB 作为磁盘按列存储格式化后的数据。所有数据会被压缩,压缩比为10:1 ~ 40:1。
- 在处理特殊查询时,即使不创建任何索引,StoneDB 也能达到具有竞争力的性能。要了解更多信息,请点击这里。
如果您想在同一个实例中同时使用 InnoDB 和 Tianmu 来运行连接查询,在文件my.cnf中设置stonedb_ini_allowmysqlquerypath为1。
目前还没有开发在存储引擎之间移动数据的在线迁移工具,但是您显然希望在不停机、不丢失数据或不准确结果的情况下进行迁移。为了实现这一点,您需要从使用 InnoDB 引擎的源 MySQL 服务器上逻辑地移动数据,并将其加载到 Tianmu 中进行分析处理。具体流程如下:
-
创建一个StoneDB实例和表。
-
将所有数据库和表模式从源复制到目标。
-
通过执行
SELECT…INTO OUTFILE
将每个表转储到一个文件。 -
将文件发送到目的地,并使用
load DATA…INFILE
加载它们。
相关文档可在https://stonedb.io 上找到。该文档为您提供了 StoneDB 基础知识,使用 StoneDB 的广泛示例,以及您在使用 StoneDB 期间可能需要的其他信息。
GitHub讨论 是大多数关于 StoneDB 项目的讨论和交流的主页。欢迎您的参与。欢迎并重视您的每一个意见或建议。我们期待 StoneDB 成为一个开放且有影响力的项目。
您可以扫码加入我们的微信用户群:
参加StoneDB项目时,请确保您的所有行为都符合行为准则 。