MemSQL 自称是最快的内存数据库。目前已发布了2.5版本。

MemSQL 具有以下特点

1 高效的并行,尤其是分布式的MemSQL.

2 高效的并发,采用lock-free的内存数据结构skip list 和hash.支持MVCC.

3 查询执行计划编译成C++的形式,可以高效执行并且可以重用

4 支持数据的冗余存储,提高可用性

5 支持重放事物日志的复制

6 支持JSON格式的数据处理

下面来看看Memsql的share-nothing分布式架构

两层架构:分为aggregator 和 leaf
 
     Aggregator 存储元数据,负责分发sql给leaf,然后综合leaf的查询结果。aggregator可以有多个,其中有一个为主aggregator。 主aggregator 还可以执行DDL和负责Leaf的auto-failover.其它普通aggregator 则不行。当主aggregator 失效,可以从其它普通aggregator 选择一个通过sql命令设置为主aggregator 。
     Leaf上存储真正的数据,数据通过主键hash存储到各个leaf节点,leaf之间的数据均匀分布不会倾斜。目前还不支持范围分区。在建库时指定分区数,分区数应该为leaf节点的整数倍,一般设为8倍。每个leaf都是一个分库,分取数据存储在分库的表中。表只持二级索引,同时支持以主键为前缀的唯一索引。
 
两种表类型
    参照表(reference table): 数据分布在主aggregator和每个leaf节点。每个节点的数据都是完整的(没有分区)。参照表同过复制从主aggregator向每个leaf节点同步数据。另外参照表的写只能在主aggregator进行。
    分布表 (sharded table):数据通过hash分片存储在每个leaf节点,每个leaf节点只有部分数据。
 
数据冗余
    可用组(availability group),每个组是一些leaf的集合。组与组之间是冗余存储的。目前最多支持两个组。以两个组为例,每个组都包含完整数据,每个分区表在两个组都有一分copy.可以基于电力和网络条件进行分组。
 
扩展性
     支持动态增删Leaf节点,但需要执行rebalance partitions命令来重新分布分区数据。rebalance 操作都是在线进行的,即操作过程中不影响数据正常访问。rebalance操作的单位是库,最小粒度是 partition.
       下面是leaf节点状态变化图
 
MemSQL兼容mysql协议。支持mysql的ODBC,JDBC及其它语言接口。
 
一些思考

1 支持mysql 协议,使的memsql学习成本较低,同时mysql的ODBC,JDBC可以直接拿来使用,提高了可用性,同时也减少了MemSQL自身的开发成本。
2 redundancy_level目前最高支持2.集群中出现两个Leaf节点同时故障的可能性不是很低。后需应该支持3及以上的level;在redundancy_level为2的情况下,如果一个leaf节点出现故障,对应的冗余节点负载一般会提升一倍,负载不均衡,很可能造成新的故障。
3 availability group是一个很好的分组方式,可以将不同的组放在不同的机房,提高可用性。
4 对于reblance table 操作,可以做到在线的方式进行,感觉难度比较大,但文档中没有看到更详细的实现说明。

参考:

http://www.memsql.com 

MemSQL 架构初探(转)的更多相关文章

  1. MemSQL 架构初探

    MemSQL 自称是最快的内存数据库.目前已发布了2.5版本. MemSQL 具有以下特点 1 高效的并行,尤其是分布式的MemSQL. 2 高效的并发,采用lock-free的内存数据结构skip ...

  2. OceanBase 架构初探

    OceanBase 架构初探 原创衣舞晨风 发布于2018-11-13 08:44:14 阅读数 1417  收藏 展开 1.设计思路 OceanBase的目标是支持数百TB的数据量以及数十万TPS. ...

  3. scrapy架构初探

    scrapy架构初探 引言 Python即时网络爬虫启动的目标是一起把互联网变成大数据库.单纯的开放源代码并不是开源的全部,开源的核心是"开放的思想",聚合最好的想法.技术.人员, ...

  4. 云原生时代, Kubernetes 多集群架构初探

    为什么我们需要多集群? 近年来,多集群架构已经成为“老生常谈”.我们喜欢高可用,喜欢异地多可用区,而多集群架构天生就具备了这样的能力.另一方面我们也希望通过多集群混合云来降低成本,利用到不同集群各自的 ...

  5. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  6. React Native For Android 架构初探

    版权声明:本文由王少鸣原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/171 来源:腾云阁 https://www.qclo ...

  7. Scrapy的架构初探

    Scrapy,Python开发的一个web抓取框架. 1,引言 Python即时网络爬虫启动的目标是一起把互联网变成大数据库.单纯的开放源代码并不是开源的全部,开源的核心是“开放的思想”,聚合最好的想 ...

  8. DDD「领域驱动设计」分层架构初探

    前言 基于 DDD 传统分层架构实现. 项目 github地址:https://github.com/WuMortal/DDDSample 这个分层架构是工作中项目正在使用的分层架构,使用了一段时间发 ...

  9. Android架构初探

    #一 背景点评美团合并之后,业务需要整合,我们部门的几条业务需要往美团平台迁移,为了降低迁移成本,开发和维护成本,以及将来可能要做的单元测试,需要对架构进行相应的调整.之前的代码都堆在Activity ...

随机推荐

  1. 在Linux里安装Samba(文件共享)方便在Windows下面操作

    第一步:安装包 在CentOS是 yum install samba 在Ubuntu是 apt install samba 第二步:添加用户 adduser 用户名 smbpasswd -a 用户名 ...

  2. 第一次有人把小米9快充讲的这么简单明了qc3.0 usb pd

    原文: http://www.chongdiantou.com/wp/archives/32093.html 2019年2月20日,小米在北京工业大学体育馆举办了盛况空前的小米9手机发布会,会上雷军揭 ...

  3. ORM多表操作之创建关联表及添加表记录

    创建关联表 关于表关系的几个结论 (1)一旦确立表关系是一对多:建立一对多关系----在多对应的表中创建关联字段. (2)一旦确立表关系是多对多:建立多对多关系----创建第三张关系表----id和两 ...

  4. 智行火车票免费加速到VIP最高速抢票(不用朋友积攒或者购买加速包)

    更新: 2018.11.07, 昨天我买火车票,已经不行了,这个bug已经没有了,被修复了, 望大家知悉!!! 智行火车票免费加速到VIP最高速抢票(不用朋友积攒或者购买加速包) 1)下过单后选择抢到 ...

  5. RHEL7安装配置VNC

    RHEL7安装配置VNC 作者:Eric 微信:loveoracle11g 安装配置VNC服务程序 [root@zhouwanchun yum.repos.d]# cd ~ [root@zhouwan ...

  6. centos6.2 安装Mysql5.6

    1. mysql官网下载rpm包 [root@slave2 home]# ls hbase  hive  mysql  mysql57-community-release-el6-11.noarch. ...

  7. IIS 修改并发连接数

    http://www.cnblogs.com/dudumao/p/4078687.html

  8. css初探

    CSS 语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. selector {                   property: value;                 ...

  9. 7 家 IT 厂商 6394.5 万元中标天津公安云项目(虚拟化、数据库、软件开发)

    http://mp.weixin.qq.com/s/kjum54HJorGTPtZiM-HE1g 天津市公安局云计算平台项目分为:大数据部分.虚拟化部分.数据库部分,软件开发部分,预算分别为:2350 ...

  10. WebView加载失败或网络异常时,替换WebView的错误界面;

    WebView在加载失败时会显示一个失败原因的界面,各个手机显示的界面还都不一样,部分手机还会把Url显示出来:我们要做的就是统一加载失败的界面: 大概思路:在WebView这个控件上面再覆盖一个Vi ...