StoneDB认识
官网介绍
StoneDB是国内首款基于MySQL的实时HTAP数据库产品, 由杭州石原子科技有限公司自主设计、研发的基于 MySQL 内核打造的开源 HTAP(Hybrid Transactional nd Analytical Processing)融合型数据库产品,可实现 MySQL 的无缝切换。StoneDB 具备高性能、实时分析等特点,为用户提供一站式HTAP解决方案。 StoneDB是一款兼容 MySQL的 HTAP 数据库,可以实现从MySQL到StonDB的无缝切换。
StoneDB是一款支持行列混存+内存计算的HTAP数据库,采用完全自主研发的存储和计算引擎。 StoneDB 采用基于知识网格技术和列式存储引擎,该存储引擎为海量数据背景下 OLAP 应用而设计,通过列式存储数据、知识网格过滤、高效数据压缩等技术,为应用系统提供低成本和高性能的数据查询支持。
StoneDB 是 100% 兼容 MySQL 5.6、5.7协议和 MySQL 生态等重要特性,支持 MySQL 常用的功能及语法,支持 MySQL 生态中的系统工具和客户端,如 Navicat、Workbench、mysqldump、mydumper。由于 100% 兼容 MySQL,因此 StoneDB 的所有工作负载都可以继续使用 MySQL 数据库体系运行。
StoneDB 专门针对 OLAP 应用程序进行了设计和优化,支持百亿数据场景下进行高性能、多维度字段组合的复杂查询。兼容MySQ、简化架构和管理、实时性高、分析性能强劲、成本节约、完全开源等。
完全兼容 MySQL
StoneDB 是在原生的 MySQL 中加入的存储引擎,最终集成为 HTAP 数据库,因此是 100% 兼容 MySQL 的。支持标准数据库接口,包括 ODBC、JDBC 和本地连接。支持 API 接口,包括 C、C++、C#、Java、PHP、Perl 等。StoneDB 支持 ANSI SQL-92 标准和 SQL-99 扩展标准中视图和存储过程,这种支持使得现有应用程序无需修改应用代码即可使用 StoneDB,从而可实现与 MySQL 的无缝切换。
实时HTAP
同时提供行式存储引擎 InnoDB 和列式存储引擎 StoneDB,通过 binlog 从 InnoDB 复制数据,保证行式存储引擎 InnoDB 和列式存储引擎 StoneDB 之间的数据强一致性。
高性能查询
在千万、亿级甚至更多数据量下进行复杂查询时,相比 MySQL,其查询速度提升了十倍以上。
低存储成本
对数据最高可实现 40 倍压缩,节省了数据存储空间和企业的成本。
核心技术
列式存储
列式存储在存储数据时是按照列模式将数据存储到磁盘上的,读取数据时,只需要读取需要的字段,极大减少了网络带宽和磁盘 IO 的压力。基于列式存储无需为列再创建索引和维护索引。
数据压缩比
在关系型数据库中,同一列中的数据属于同一种数据类型,如果列中的重复值越多,则压缩比越高,而压缩比越高,数据量就越小,数据被读取时,对网络带宽和磁盘 IO 的压力也就越小。由于列式存储比行式存储有着十倍甚至更高的压缩比,StoneDB 节省了存储空间,降低了存储成本。
知识网格
知识网格根据元数据信息进行粗糙集过滤查询中不符合条件的数据,最后只需要对可疑的数据包进行解压获取符合查询条件的数据,大量减少读取 IO 操作,提高查询响应时间和网络利用率。
基于推送的矢量化查询处理
StoneDB通过执行计划将矢量块(列式数据切片)从一个运算符推送到另一个运算符来处理查询,与基于元组的处理模型相比,基于推送的执行模型避免了深度调用堆栈,并节省了资源。
笔者介绍
把MySQL的架构 按照三层划分,可以分为接口层、服务层、存储层。如果分为两层也有存储层,存储层是MySQL最重要的,StoneDB独立自主研发了TIANMU存储引擎,即Stone引擎。
TIANMU无缝对接MySQL的所有生态 ,对上与服务层、接口无丝密缝,你可以像使用MYSQL一样使用StoneDB,可以通过binlog从innodb里面同步复制数据, innodb负责TP,TIANMU负责AP,两者合作一起支持HTAP功能。
·
下载安装使用
下载
wget https://github.com/stoneatom/stonedb/releases/download/5.7-v1.0.4-alpha/stonedb-ce-5.7-v1.0.4-alpha.el7.x86_64.rpm
安装
yum install stonedb-ce-5.7-v1.0.4-alpha.el7.x86_64.rpm -y
查看密码
grep "password" /opt/stonedb57/install/log/tianmu.log
启动服务
/opt/stonedb57/install/mysql_server start
Starting Stonedbbasedir::: /opt/stonedb57/install/
bindir::: /opt/stonedb57/install//bin
datadir::: /opt/stonedb57/install/data/
mysqld_pid::: /opt/stonedb57/install/data/mysqld.pid
.2023-09-01T13:25:35.637586Z mysqld_safe Logging to '/opt/stonedb57/install/data/server130.err'.
2023-09-01T13:25:35.702514Z mysqld_safe Starting mysqld daemon with databases from /opt/stonedb57/install/data
................................................................................................................................ SUCCESS!
登录
/opt/stonedb57/install/bin/mysql -uroot -pXXXXX -S /opt/stonedb57/install/tmp/mysql.sock
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.36-StoneDB-v1.0.4} build-
Copyright (c) 2021, 2022 StoneAtom Group Holding Limited
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
默认的引擎是 Tianmu storage engine
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| CSV | YES | CSV storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| TIANMU | DEFAULT | Tianmu storage engine | YES | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)
下面像使用mysql一样使用stoneDB!




