StoneDB 是什么?
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)
我们用来验证构建的编译器工具集:
以下是我们用来验证构建的包:
- Make 3.82 or later
- CMake 3.7.2 or later
- marisa 0.77
- RocksDB 6.12.6
- Boost 1.66
通过源码编译 StoneDB
Ubuntu 20.04 下编译 StoneDB
更多信息,可以查看 Compile StoneDB on Ubuntu 20.04。
CentOS 7.x 下编译 StoneDB
更多信息,可以查看 Compile StoneDB on CentOS 7。
RedHat 7.x 下编译 StoneDB
更多信息,可以查看 Compile StoneDB on RHEL 7。
在 Docker 容器中通过源码编译 StoneDB
更多信息,可以查看 Compile StoneDB in a Docker Container。
配置 StoneDB
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 &
用 StoneDB 创建表
--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 也能达到具有竞争力的性能。要了解更多信息,请点击这里。
现在,让我们快速体验 StoneDB
在生产环境中从 MySQL 切换到 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 用户群
您可以扫码加入我们的微信用户群:
行为准则
参加StoneDB项目时,请确保您的所有行为都符合行为准则 。