Skip to content

Commit

Permalink
docs(tianmu): update the latest docs (#484) (#485)
Browse files Browse the repository at this point in the history
* fix(compile-method): fix the wrong configuration

* docs(readme): update the docs

* docs(about-stonedb): update the docs

* docs(getting-started): update the docs

* docs(Q&M): update the docs

* docs(compile-methods): update the docs

* docs(functions): update the docs

* docs(database-tuning): update the docs
  • Loading branch information
Nliver authored Sep 13, 2022
1 parent fde56c8 commit 4562857
Show file tree
Hide file tree
Showing 24 changed files with 312 additions and 620 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: compile-using-centos7-foe-56
sidebar_position: 5.12.1
sidebar_position: 5.121
---

# Compile StoneDB for MySQL5.6 on CentOS 7
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: compile-using-centos7-for-57
sidebar_position: 5.12.2
sidebar_position: 5.122
---

# Compile StoneDB for MySQL5.7 on CentOS 7
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: compile-using-redhat7-for-56
sidebar_position: 5.13.1
sidebar_position: 5.131
---

# Compile StoneDB for MySQL5.6 on RHEL 7
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: compile-using-redhat7-for-57
sidebar_position: 5.13.2
sidebar_position: 5.132
---

# Compile StoneDB for MySQL5.7 on RHEL 7
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: compile-using-ubuntu20.04-for-56
sidebar_position: 5.14.1
sidebar_position: 5.141
---

# Compile StoneDB for MySQL5.6 on Ubuntu 20.04
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: compile-using-ubuntu20.04-for-57
sidebar_position: 5.14.2
sidebar_position: 5.142
---

# Compile StoneDB for MySQL5.7 on Ubuntu 20.04
Expand Down
6 changes: 3 additions & 3 deletions README_zh-hans.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ mysqld_safe --defaults-file=/path/to/my.cnf --user=mysql &
## 用 StoneDB 创建表

```sql
--The example code for creating a table with 'stonedb' engine.
--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',
Expand All @@ -142,8 +142,8 @@ CREATE TABLE `example_table` (
`data` varchar(255) NOT NULL DEFAULT '',
`time` bigint(20) NOT NULL DEFAULT '0',
`version` int(11) NOT NULL DEFAULT '0',
) ENGINE=stonedb;

) ENGINE=tianmu;
-- For version 5.6, the engine should be set to 'stonedb'
```

这个例子展示了 StoneDB 中的一些重要特性和限制。有关限制的更多信息,请参见 [StoneDB Limitations](https://stonedb.io/docs/about-stonedb/limits).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar_position: 1.2

# 整体架构

![image.png](./stonedb-V1-zhCN.png)
![StoneDB V1.0 架构](./stonedb-V1-zhCN.png)

StoneDB 是一个 HTAP 数据库,其存储引擎 Tianmu 是一个高性能、高压缩比的列式存储引擎,适用于 OLAP 应用。和其他的存储引擎如 InnoDB、MyISAM 一样,Tianmu 提供了存储引擎所具有的一切功能。从架构上可以看出,逻辑上分为应用层、服务层和存储引擎层。在 StoneDB 中,一个 SQL 从发起到最终返回结果,会经历每个逻辑层的不同组件。
## 应用层
Expand Down Expand Up @@ -42,18 +42,18 @@ StoneDB 有自己的优化器,优化器会对 SQL 语句进行优化,如表

粗糙集是一门数学学科,用来研究不完整的数据,不精确的知识表达、学习、归纳等的一套理论。在 StoneDB 中,粗糙集用于对数据包的划分,根据 SQL 的查询条件的数据在数据包中的确认范围,数据包分为以下几类:

1不相关的数据包:表示不满足查询条件的数据包,这类数据包直接被忽略。
1. 不相关的数据包:表示不满足查询条件的数据包,这类数据包直接被忽略。

2相关的数据包:表示满足查询条件的数据包,如果要查询相关的数据包里面的具体数据,需要对数据包进行解压缩,如果根据数据包的元数据节点就能得到数据,那么就不需要解压缩数据包。
2. 相关的数据包:表示满足查询条件的数据包,如果要查询相关的数据包里面的具体数据,需要对数据包进行解压缩,如果根据数据包的元数据节点就能得到数据,那么就不需要解压缩数据包。

3可疑的数据包:表示数据包中的数据部分满足查询条件,需要进一步解压缩数据包才能得到满足条件的数据。
3. 可疑的数据包:表示数据包中的数据部分满足查询条件,需要进一步解压缩数据包才能得到满足条件的数据。
#### Data Pack Node
数据包节点也称为元数据节点,记录了每个数据包中列的最大值、最小值、平均值、总和、总记录数、null 值的数量、压缩方式、占用的字节数。每一个元数据节点对应一个数据包。
#### Knowledge Node
元数据节点的上一层是知识节点,除了记录数据包之间或者列之间关系的元数据集合,比如数据包的最小值与最大值范围、列之间的关联关系外,还记录了数据特征以及更深度的统计信息。大部分的知识节点数据是装载数据的时候产生的,另外一部分是查询的时候产生的。

知识节点的3种基本类型:
##### 1Histogram
##### 1. Histogram
数据类型为整型、日期型、浮点型的列的统计值以直方图的形式存在。将一个数据包的最小值到最大值之间分为1024段,每段占用一个 bit,如果数据包中的实际值处于段中的范围,则标记为1,否则标记为0。Histogam 在数据被加载时自动创建。

如下的例子中,说明数据包中有值落在0~100和102301~102400两个区间。
Expand All @@ -67,7 +67,7 @@ StoneDB 有自己的优化器,优化器会对 SQL 语句进行优化,如表
select * from table where id>199 and id<299;
```
通过直方图可知,这个查询没有在这个数据包命中,即当前数据包不满足查询条件,这个数据包直接被丢弃。
##### 2Character Map
##### 2. Character Map
数据类型为字符串的列的字符映射表。统计当前数据包内 1~64 长度中 ASCII 字符是否存在。如果存在,则标记为1,否则标记为0。字符检索时,按照字符顺序依次对比字符标识值即可知道该数据包是否包含匹配数据。Character Map 在数据被加载时自动创建。

如下的例子中,说明 A 在字符串的第1个和第64个位置。
Expand All @@ -79,7 +79,7 @@ select * from table where id>199 and id<299;
| C | 1 | 1 | ... | 1 |
| ... | ... | ... | ... | ... |

##### 3Pack to Pack
##### 3. Pack to Pack
包对包关系表示不同表的两个列之间的等值映射表,并以二进制矩阵的形式进行存储,如果符合表关联条件,则标记为1,否则标记为0。包对包关系能帮助在表关联查询的时候快速判断出符合查询条件的数据包,从而提升表关联查询的效率。表关联查询时,Pack to Pack 被自动创建。

如下的例子中,表关联的查询条件是"A.C=B.D",在 A.C1 这个数据包中,只有 B.D2 和 B.D5 这两个数据包中有符合表关联条件的值。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,36 +15,36 @@ StoneDB 采用基于知识网格技术和列式存储引擎,该存储引擎为

## 产品优势

- 完全兼容 MySQL
### 完全兼容 MySQL

StoneDB 支持标准数据库接口,包括 ODBC、JDBC 和本地连接。支持 API 接口,包括 C、C++、C#、Java、PHP、Perl 等。StoneDB 全面支持 ANSI SQL-92 标准和 SQL-99 扩展标准中视图和存储过程,这种支持使得现有应用程序无需修改应用代码即可使用 StoneDB,从而可实现与 MySQL 的无缝切换。

- 高性能查询
### 高性能查询

在千万、亿级甚至更多数据量下进行复杂查询时,StoneDB 相比其他行式存储引擎的关系型数据库,其查询速度提升了十倍以上。

- 低存储成本
### 低存储成本

对数据最高可实现40倍压缩,极大的节省了数据存储空间和企业的成本。

## 核心技术

- 列式存储
### 列式存储

StoneDB 创建的表在磁盘上是以列模式进行存储的,由于关系型数据库中每一列的数据类型都相同,所以这种连续的空间存储与行式存储相比,更加能够实现数据的高压缩比。在读取数据方面,如果只想查询一个字段的结果,在行式存储中,引擎层向服务层返回的是一整行的数据,需要消耗更多的网络带宽和 IO。而列式存储只需要返回一个字段,极大减少了网络带宽和 IO 的消耗。另外,列式存储无需再为列创建索引和维护索引。

- 高效的数据压缩比
### 高效的数据压缩比

StoneDB 会根据不同的数据类型选择不同的压缩算法,目前支持的压缩算法主要有 PPM、LZ4、B2、Delta 等。数据被压缩后,数据量变得更小,在读取数据时,对网络带宽和磁盘 IO 的压力也就越小。由于列式存储相比行式存储有十倍甚至更高的压缩比,StoneDB 可以节省大量的存储空间,降低存储成本。

- 知识网格
### 知识网格

在 StoneDB 中,数据包根据粗糙集概念划分为不相关数据包、可疑数据包、相关数据包。StoneDB 根据知识网格技术过滤掉不相关的数据包,对可疑数据包需要进一步解压缩才能得到满足条件的数据。如果能从相关数据包的元数据节点得到结果,无需再解压缩数据包。这样就消除了解压缩数据包的过程和降低 IO 消耗,提高了查询响应时间和网络利用率。

- 高性能导入
### 高性能导入

StoneDB 提供独立的数据导入客户端,支持不同的数据源环境,支持多语言架构。数据在导入前,首先会进行预处理,如数据压缩和知识节点的构建。数据经过预处理后,进入存储引擎无需再次执行解析、数据验证以及事务处理等操作。

- 基于推送的矢量化查询处理
### 基于推送的矢量化查询处理

StoneDB 通过执行计划将矢量块(列式数据切片)从一个运算符推送到另一个运算符来处理查询,与基于元组的处理模型相比,基于推送的执行模型避免了深度调用堆栈,并节省了资源。
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,10 @@ age smallint,
birthday DATE
) engine=stonedb;
```
注:1)StoneDB 5.6 的存储引擎名是 stonedb,5.7 的存储引擎名是 tianmu。<br />2)如果 SQL 语句中未指定“engine=stonedb”,则所创建的表的存储引擎由参数 default_storage_engine 决定,详情参见[设置参数](../04-developer-guide/05-appendix/configuration-parameters.md)
:::info
1. StoneDB-5.6 的存储引擎名是 `stonedb`;StoneDB-5.7 的存储引擎名是 `tianmu`
2。 如果 SQL 语句中未指定“engine=stonedb”,则所创建的表的存储引擎由参数 default_storage_engine 决定,详情参见[设置参数](../04-developer-guide/05-appendix/configuration-parameters.md)
:::
### 2)查看表
查看表结构使用以下 SQL 语句:
```sql
Expand Down Expand Up @@ -90,7 +93,9 @@ select name,birthday from student order by birthday;
```sql
create user 'tiger'@'%' identified by '123456';
```
注:用户名和主机名('username'@'host')唯一表示一个用户,'tiger'@'%'和'tiger'@'localhost'是两个不同的用户。
:::info
用户名和主机名('username'@'host')唯一表示一个用户,'tiger'@'%'和'tiger'@'localhost'是两个不同的用户。
:::
### 2)向用户授权
例如:向用户 tiger 授予可查询数据库 test_db 所有的表,可以使用以下 SQL 语句:
```sql
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,36 +5,38 @@ sidebar_position: 4.32

# MySQL全量数据备份-mydumper

mydumper项目地址[https://github.com/mydumper/mydumper](https://github.com/mydumper/mydumper)
## Mydumper介绍
### 什么是Mydumper
Mydumper 是一个 MySQL 逻辑备份工具它有 2 个工具:
mydumper 项目地址[https://github.com/mydumper/mydumper](https://github.com/mydumper/mydumper)
## mydumper 介绍
### 什么是 mydumper
mydumper 是一个 MySQL 逻辑备份工具它有 2 个工具:

- mydumper负责导出 MySQL 数据库的一致备份
- myloader从 mydumper 读取备份,连接到目标数据库并导入备份。两种工具都使用多线程功能
### Mydumper优势
- mydumper 负责导出数据。
- myloader 从 mydumper 读取备份,连接到目标数据库并导入备份,两种工具都可以使用多线程。
### mydumper 优势

- 并行性(因此,速度)和性能(避免昂贵的字符集转换例程,整体高效的代码)
- 更易于管理输出表的单独文件、转储元数据等,易于查看/解析数据
- 一致性 - 维护所有线程的快照,提供准确的主从日志位置等
- 可管理性 - 支持 PCRE 以指定数据库和表的包含和排除
### Mydumper主要特性
- 并行性和性能
- 更易于管理输出表的单独文件、转储元数据等,易于查看/解析数据
- 一致性维护所有线程的快照,提供准确的主从日志位置等
- 可管理性支持 PCRE 以指定数据库和表的包含和排除
### mydumper 主要特性

- 多线程备份,备份后会生成多个备份文件
- 事务性和非事务性表一致的快照(适用于0.2.2以上版本)
- 事务性和非事务性表一致的快照适用于0.2.2以上版本
- 快速的文件压缩
- 支持导出binlog
- 多线程恢复(适用于0.2.1以上版本)
- 以守护进程的工作方式,定时快照和连续二进制日志(适用于0.5.0以上版本)
- 开源 (GNU GPLv3)
## Mydumper使用
### Mydumer 参数
- 支持导出 binlog
- 多线程恢复适用于0.2.1以上版本
- 以守护进程的工作方式,定时快照和连续二进制日志适用于0.5.0以上版本
- 开源GNU GPLv3
## mydumper使用
### mydumer 参数
```bash
mydumper --help
Usage:
mydumper [OPTION…] multi-threaded MySQL dumping

Help Options:
-?, --help Show help options

Application Options:
-B, --database Database to dump
-o, --outputdir Directory to output files to
Expand Down Expand Up @@ -105,13 +107,15 @@ Application Options:
-S, --socket UNIX domain socket file to use for connection
-x, --regex Regular expression for 'db.table' matching
```
### Myloader参数
### myloader参数
```bash
myloader --help
Usage:
myloader [OPTION…] multi-threaded MySQL loader

Help Options:
-?, --help Show help options

Application Options:
-d, --directory Directory of the dump to import
-q, --queries-per-transaction Number of queries per transaction, default 1000
Expand Down Expand Up @@ -148,20 +152,22 @@ Application Options:
-S, --socket UNIX domain socket file to use for connection
-x, --regex Regular expression for 'db.table' matching
--skip-definer Removes DEFINER from the CREATE statement. By default, statements are not modified
```
### 安装使用
```bash
#到项目github 上下载机器对应的rpm包或者源码包,源码包需要进行编译,rpm包安装简单建议使用,本文以centos 7系统为例,所以下载el7版本
# 到项目 github 上下载机器对应的 rpm 包或者源码包,源码包需要进行编译,rpm 包安装简单建议使用,本文以 CentOS 7 系统为例,所以下载 el7 版本
[root@dev tmp]# wget https://github.com/mydumper/mydumper/releases/download/v0.12.1/mydumper-0.12.1-1-zstd.el7.x86_64.rpm
#由于下载的mydumper是zstd类型的,所以需要下载libzstd依赖
# 由于下载的 mydumper 是 zstd 类型的,所以需要下载 libzstd 依赖
[root@dev tmp]# yum install libzstd.x86_64 -y
[root@dev tmp]#rpm -ivh mydumper-0.12.1-1-zstd.el7.x86_64.rpm
[root@dev tmp]# rpm -ivh mydumper-0.12.1-1-zstd.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:mydumper-0.12.1-1 ################################# [100%]
#备份库
# 备份库
[root@dev home]# mydumper -u root -p xxx -P 3306 -h 127.0.0.1 -B zz -o /home/dumper/
#恢复库
# 恢复库
[root@dev home]# myloader -u root -p xxx -P 3306 -h 127.0.0.1 -S /stonedb/install/tmp/mysql.sock -B zz -d /home/dumper
```
**备份所生成的文件**
Expand All @@ -179,6 +185,7 @@ SHOW MASTER STATUS:
Log: mysql-bin.000002
Pos: 4737113
GTID:
Finished dump at: 2022-03-23 15:51:40
[root@dev-myos dumper]# cat zz-schema-create.sql
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `zz` /*!40100 DEFAULT CHARACTER SET utf8 */;
Expand All @@ -194,6 +201,7 @@ INSERT INTO `t_user` VALUES(1,"e1195afd-aa7d-11ec-936e-00155d840103","kAMXjvtFJy
[root@dev-myos dumper]# cat zz.t_user-schema.sql
/*!40101 SET NAMES binary*/;
/*!40014 SET FOREIGN_KEY_CHECKS=0*/;
/*!40103 SET TIME_ZONE='+00:00' */;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
Expand All @@ -206,37 +214,31 @@ CREATE TABLE `t_user` (
KEY `idx_user_id` (`c_user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8;
```
目录
metadata文件
metadata 文件
- 记录了备份数据库在备份时间点的二进制日志文件名,日志的写入位置,
- 如果是在从库进行备份,还会记录备份时同步至主库的二进制日志文件及写入位置
每个表有两个备份文件:
database-schema-create 库创建语句文件
database.table-schema.sql 表结构文件
database.table.00000.sql 表数据文件
database.table-metadata 表元数据文件
***扩展***
如果要导入数据到StoneDB,需要把Mydumper的database.table-schema.sql 表结构文件中建表语句engine=innodb 改成 engine=stonedb,并检查表结构是否有StoneDB不兼容的语法:类似unsigned 之类的限制。修改后结构示例:
```
[root@dev-myos dumper]# cat zz.t_user-schema.sql
/*!40101 SET NAMES binary*/;
/*!40014 SET FOREIGN_KEY_CHECKS=0*/;
/*!40103 SET TIME_ZONE='+00:00' */;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`c_user_id` varchar(36) NOT NULL DEFAULT '',
`c_name` varchar(22) NOT NULL DEFAULT '',
`c_province_id` int(11) NOT NULL,
`c_city_id` int(11) NOT NULL,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=STONEDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8;
```
- database-schema-create 库创建语句文件
- database.table-schema.sql 表结构文件
- database.table.00000.sql 表数据文件
- database.table-metadata 表元数据文件
### 备份原理
- 主线程 FLUSH TABLES WITH READ LOCK, 施加全局只读锁,保证数据的一致性
- 读取当前时间点的二进制日志文件名和日志写入的位置并记录在metadata文件中,以供全量恢复后追加binlog恢复使用
- N个(线程数可以指定,默认是4)dump线程把事务隔离级别改为可重复读 并开启一致性读事务
- 主线程 FLUSH TABLES WITH READ LOCK,施加全局只读锁,保证数据的一致性
- 读取当前时间点的二进制日志文件名和日志写入的位置并记录在 metadata 文件中,以供全量恢复后追加 binlog 恢复使用
- N个(线程数可以指定,默认是4)dump 线程把事务隔离级别改为可重复读 并开启一致性读事务
- dump non-InnoDB tables, 首先导出非事物引擎的表
- 主线程 UNLOCK TABLES 非事物引擎备份完后,释放全局只读锁
- dump InnoDB tables, 基于事物导出InnoDB表
- 事物结束
- dump InnoDB tables,基于事物导出 InnoDB 表
- 事物结束
Loading

0 comments on commit 4562857

Please sign in to comment.