mariadb: 新兴的开源大数据引擎

31
MariaDB: 新新新新新新新新 新新 Colin Charles, Team MariaDB, SkySQL Ab [email protected] | http://mariadb.org/ http://bytebot.net/blog/ | @bytebot on Twitter 新新新新新 , 新新 , 新新 2014 新 6 新 11 新

Upload: colin-charles

Post on 26-Jan-2015

164 views

Category:

Technology


10 download

DESCRIPTION

MariaDB: 新兴的开源大数据引擎 - this presentation was translated into Chinese by Ni Yan of Nexedi. It was presented in Beijing, China at the Police Big Data Conference.

TRANSCRIPT

Page 1: MariaDB: 新兴的开源大数据引擎

MariaDB: 新兴的开源大数据引擎

Colin Charles, Team MariaDB, SkySQL [email protected] | http://mariadb.org/

http://bytebot.net/blog/ | @bytebot on Twitter警察大数据 , 北京 , 中国

2014 年 6 月 11 日

Page 2: MariaDB: 新兴的开源大数据引擎

我是谁• 在 SkySQL Ab 进行 MariaDB 的工作

• 已与 Monty Program Ab 合并 , MariaDB 的创建者

• 原来的 MySQL AB (exit: Sun Microsystems)

• 过去的经历包括了 Fedora Project (FESCO), OpenOffice.org

Page 3: MariaDB: 新兴的开源大数据引擎

全球前 20 名网站1. Google

2. Facebook

3. YouTube

4. Yahoo!

5. Baidu

6. Wikipedia

7. QQ

8. Taobao

9. Twitter

10.Live

11.LinkedIn

12.Sina

13.Amazon

14.hao123.com

15.google.co.in

16.blogspot

17.weibo.com

18.wordpress.com

19.360.cn

20.yandex.ru

Page 4: MariaDB: 新兴的开源大数据引擎

5W1H 是 MariaDB

• 嵌入式可兼容的 MySQL 替代品

• 社区开发 , 功能加强 , 向后兼容 , GPLv2 许可

• 4 年 4 个月稳定连续地发布 : 5.1, 5.2, 5.3, 5.5, 10.0, MariaDB Galera Cluster 5.5, MariaDB 以及 TokuDB 5.5

• 企业功能开放 : PAM 认证插件 , 线程池 , 审计插件

• 默认红帽企业 Linux, Fedora, openSUSE, 等

Page 5: MariaDB: 新兴的开源大数据引擎

为什么 MariaDB?

• MySQL 由 Oracle 所有 ; MariaDB 由 MariaDB 基金会支持

• 提供社区 , 存储引擎供应商,以及更多的运送和分配选择

• 固定的工程师组 - Oracle 拥有 MySQL 品牌 , MariaDB 拥有工程师的智慧

• 生机勃勃的社区 : 40% SkySQL 组 MariaDB, 60% 社区贡献者

• 由 SkySQL 及其他相关组织提供支持

Page 6: MariaDB: 新兴的开源大数据引擎

MariaDB 在中国

• 来自淘宝的贡献 ( 多重资源复制, 在 I_S 里的内存使用 )

• 来自网易的贡献 (163.com)

• Feedback 插件展现了MariaDB 的高使用率

Page 7: MariaDB: 新兴的开源大数据引擎
Page 8: MariaDB: 新兴的开源大数据引擎

Virtual Columns

• 一个表中的列的值自动通过预计算的 / 决定性的表达方式或者表中其他字段的值来计算

• VIRTUAL - 当数据被查询时进行实时计算 ( 同 VIEW一样 )

• PERSISTENT - 当数据被插入并储存在表中时进行计算

MariaDB 5.2+

Page 9: MariaDB: 新兴的开源大数据引擎

Virtual columns 例子CREATE TABLE product (

->productname VARCHAR(25),

-> price_eur DOUBLE,

-> xrate DOUBLE,

-> price_cny DOUBLE AS (price_eur*xrate) VIRTUAL);

INSERT INTO product VALUES ('toothpaste', 1.5, 1.39, default);

INSERT into product VALUES ('shaving cream', 3.59, 1.39, default);

Page 10: MariaDB: 新兴的开源大数据引擎

Virtual columns 例子 II

select * from product;

+---------------+-----------+-------+-------------------+

| productname | price_eur | xrate | price_cny |

+---------------+-----------+-------+-------------------+

| toothpaste | 1.5 | 1.39 | 2.085 |

| shaving cream | 3.59 | 1.39 | 4.990099999999999 |

+---------------+-----------+-------+-------------------+

2 rows in set (0.00 sec)

Page 11: MariaDB: 新兴的开源大数据引擎

PCRE 常规表达方式• 强大的 REGEXP/RLIKE 操作员

• 新操作员 :

• REGEXP_REPLACE(sub,pattern,replace)

• REGEXP_INSTR(sub,pattern)

• REGEXP_SUBSTR(sub,pattern)

• 与 MariaDB 支持的多字节字符集兼容,包含东亚字符集

MariaDB 10.0+

Page 12: MariaDB: 新兴的开源大数据引擎

动态列• 允许你用表中每一行动态的内容创建 virtual columns 。为每个项储存

不同的属性 ( 像一个网络商店 ).

• 本质上是一个 BLOB 处理功能 : COLUMN_CREATE, COLUMN_ADD, COLUMN_GET, COLUMN_DELETE, COLUMN_EXISTS, COLUMN_LIST, COLUMN_CHECK, COLUMN_JSON

• 在 MariaDB 10.0: 名称支持 ( 取代通过数字指向列,为他命名) , 转换所有的动态列内容到 JSON 数组,与 Cassandra 对接

INSERT INTO tbl SET dyncol_blob=COLUMN_CREATE("column_name", "value");

MariaDB 5.3+

Page 13: MariaDB: 新兴的开源大数据引擎

全文检索• SphinxSE 是还依赖于 Sphinx daemon 的存储引

• 它自己本身不储存任何数据

• 它只是一个内置客户端,允许 MariaDB 和Sphinx searchd 交流 , 运行查询 , 获得结果

• 索引 , 搜索都在 Sphinx 上进行

• Mroonga 用于 CJK 语言 10.1

MariaDB 5.2+

Page 14: MariaDB: 新兴的开源大数据引擎

询问 Cassandra

• 数据被映射 : 行键 , 静态队列 , 动态队列

• 超级队列是不被支持的

• 没有数据类型的 1-1直接映射

• 从 SQL 给 Cassandra写 (SELECT, INSERT, UPDATE, DELETE)

MariaDB 10.0+

Page 15: MariaDB: 新兴的开源大数据引擎

典型使用案例

• 网页点击数据采集,数据流

• 传感器数据

• 通过查找表读取

• 想要一个自动复制的容错表?

Page 16: MariaDB: 新兴的开源大数据引擎

连接• 目标 : ETL 用于 BI 或分析

• 从 CSV, XML, ODBC, MS Access 等导入数据

• WHERE 状态推送到 ODBC 资源

• DROP TABLE 只移除存储的定义,而不是数据本身

• “Virtual” 表不能被索引

MariaDB 10.0+

Page 17: MariaDB: 新兴的开源大数据引擎

SPIDER

• 水平分区 , 建立在 PARTITIONs之上

• 将分区连接到远程服务器

• 对用户来说非常透明,容易展开

• 已启用在索引条件下推支持

MariaDB 10.0+

Page 18: MariaDB: 新兴的开源大数据引擎

TokuDB

• 开源 - 分开的 MariaDB 5.5+TokuDB/ 一体化到10.0.5

• 改进的插入 (10-20x 更快速 ) & 查询速度 , 压缩 (直到 90%空间减少 ), 复制性能和在线架构的灵活性

• 使用 Fractal Tree Indexes 代替 B-Tree

• 在多重平台上测试 & 创建 TokuDB

MariaDB 10.0+

Page 19: MariaDB: 新兴的开源大数据引擎

线程池• 由 5.1修改而来 (libevent 基础 ), 对于绑定

CPU 的加载和短时间的查询运行非常有用

• Windows (threadpool), Linux (epoll), Solaris (event ports), FreeBSD/OSX (kevents)

• 不会最小化有动态池大小的并发交易

• thread_handling=pool-of-threads

• https://mariadb.com/kb/en/thread-pool-in-mariadb-55/

MariaDB 5.5+

Page 20: MariaDB: 新兴的开源大数据引擎

非阻塞用户端库• 开始操作 , 在线程里工作 , 运行操作 , 结果返回

应用案例 : 争对单一服务器的多重查询 ( 是用更多的 CPUs); 争对多重服务器的查询 ( 许多机器上的SHOW STATUS)

• https://mariadb.com/kb/en/about-non-blocking-operation-in-the-client-library/

• 快速的 node.js驱动可用 : mariasql

MariaDB 5.5+

Page 21: MariaDB: 新兴的开源大数据引擎

限制行测试

这个优化的目的是为了提供方法以结束SELECT陈述的执行,因为它测试了太多的行,以至于使用了太多的资源。

• SELECT * from t1, t2 LIMIT 10 ROWS EXAMINED 1000;

• https://mariadb.com/kb/en/limit-rows-examined/

MariaDB 5.5+

Page 22: MariaDB: 新兴的开源大数据引擎

SQL 错误日志插件

• 日志上的错误被放在一个日志文档里发送给客户以供事后的分析。日志文档可以被循环。(推荐)

• MYSQL_AUDIT_PLUGIN

install plugin SQL_ERROR_LOG soname 'sql_errlog.so';

MariaDB 5.5+

Page 23: MariaDB: 新兴的开源大数据引擎

审计插件

• 日志服务器活动 - 谁连接到服务器 , 运行过什么查询 , 接触过什么表格 - 循环日志文档或者 syslogd

• 一个 MYSQL_AUDIT_PLUGIN

INSTALL PLUGIN server_audit SONAME ‘server_audit.so’;

MariaDB 10.0+

Page 24: MariaDB: 新兴的开源大数据引擎

更好的复制• 有选择性的跳过复制事件 ( 基于期数或在主机上或在从

属机上 )

• 复制变量的动态控制 ( 不用重启 !)

• 使用基于行的复制 ? 用 SQL陈述注解二进制日志

• 从属机在二进制日志事件上执行总校验

• 平行复制

MariaDB 5.3+

Page 25: MariaDB: 新兴的开源大数据引擎

更好的复制 II

• 在二进制日志中进行集体提交 - 最终 , sync_binlog=1, innodb_flush_log_at_trx_commit=1 执行

• 通过持续的快照复制开始交易

• mysqldump —single-transaction —master-data - full non-blocking backup

• 从属机崩溃安全 ( 数据储存在交易表内部 )

• 多重来源复制 - ( 实时 )分析 , 数据分片供应 , 备份等

Page 26: MariaDB: 新兴的开源大数据引擎

角色

•捆绑用户到一起 , 用类似的特权 - 依照 SQL标准

CREATE ROLE audit_bean_counters;

GRANT SELECT ON accounts.* to audit_bean_counters;

GRANT audit_bean_counters to ceo;

MariaDB 10.0+

Page 27: MariaDB: 新兴的开源大数据引擎

MariaDB Galera Cluster

• MariaDB Galera Cluster 是为如今的云基础环境制作的。它有完整的读 - 写扩展性,以及同步复制功能,允许多主结构,并保证无延迟或丢失交易。

• 目前基于 5.5

• 10.0 正在测试中 (快要准备发布)

Page 28: MariaDB: 新兴的开源大数据引擎

被以下公司所信任• Google

• Wikipedia

• Tumblr

• KakaoTalk

• SK Telecom

• DAPA

• Paybox Services

• ERP5, Wendelin

Page 29: MariaDB: 新兴的开源大数据引擎

包扩一个警察部门(比利时)

MariaDB + Nooku 框架

Page 30: MariaDB: 新兴的开源大数据引擎

https://mariadb.com/kb/en/

Page 31: MariaDB: 新兴的开源大数据引擎

提问 & 解答[email protected] | [email protected] http://skysql.com/ | http://mariadb.org/

twitter: @bytebot | url: http://bytebot.net/blog/