Skip to content

Latest commit

 

History

History
195 lines (127 loc) · 8.53 KB

README_zh-hans.md

File metadata and controls

195 lines (127 loc) · 8.53 KB

logo

一体化实时 HTAP 数据库

English | 中文


GitHub Workflow Status codecov Docker Pulls GitHub license slack badge WeChat badge Twitter Follow

StoneDB 是什么?

logo

StoneDB 是一个兼容 MySQL 的高性能混合事务/分析处理(HTAP)数据库。它为 MySQL 提供了分析处理(AP)能力。运行中的系统可以无缝地迁移到 StoneDB,而无需更改任何代码。与 InnoDB 相比,StoneDB 提供了 10 倍的查询性能和 10 倍的加载性能。StoneDB 还提供 10:1 到 40:1 的压缩比。

概览

logo

架构图 2.0

logo

想获取更多关于 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

在 Docker 容器中通过源码编译 StoneDB

更多信息,可以查看 Compile StoneDB in a Docker Container

当然,您也可以直接通过 Dockershub 来快速安装部署 StoneDB,只要两分钟,详情可以看官网文档

通过源码编译 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

配置 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_allowmysqlquerypath1

目前还没有开发在存储引擎之间移动数据的在线迁移工具,但是您显然希望在不停机、不丢失数据或不准确结果的情况下进行迁移。为了实现这一点,您需要从使用 InnoDB 引擎的源 MySQL 服务器上逻辑地移动数据,并将其加载到 Tianmu 中进行分析处理。具体流程如下:

  1. 创建一个StoneDB实例和表。

  2. 将所有数据库和表模式从源复制到目标。

  3. 通过执行 SELECT…INTO OUTFILE 将每个表转储到一个文件。

  4. 将文件发送到目的地,并使用 load DATA…INFILE 加载它们。

文档

相关文档可在https://stonedb.io 上找到。该文档为您提供了 StoneDB 基础知识,使用 StoneDB 的广泛示例,以及您在使用 StoneDB 期间可能需要的其他信息。

论坛

GitHub讨论 是大多数关于 StoneDB 项目的讨论和交流的主页。欢迎您的参与。欢迎并重视您的每一个意见或建议。我们期待 StoneDB 成为一个开放且有影响力的项目。

加入 StoneDB 用户群

您可以扫码加入我们的微信用户群:

行为准则

参加StoneDB项目时,请确保您的所有行为都符合行为准则