恒讯科技全方位介绍:什么是MemSQL?

今天,恒讯科技小编将在本文中全方位给大家介绍什么是MemSQL?MemSQL 是一个基于 SQL 的分布式数据库管理系统。2013 年 4 月 23 日,MemSQL 向公众发布了其第一个普遍可用的数据库版本。



为了处理高度易变的工作负载,MemSQL 结合了无锁数据结构和即时编译 (JIT)。更具体地说,MemSQL 在内存中实现了无锁哈希表和无锁跳过列表,以实现对数据的快速随机访问。发送到 MemSQL 服务器的 SQL 查询被转换为字节码,并通过 LLVM 编译成机器码。然后查询的参数被剥离,查询模板存储为共享对象,随后与传入的查询进行匹配。执行预编译的查询计划消除了沿热代码路径的解释,提供了高效的代码路径,最大限度地减少了处理 SQL 语句所需的中央处理单元 (CPU) 指令的数量。


MemSQL 可以将数据库表存储为行存储或列存储。使用的格式由用户确定为 DDL 时间(即创建表的时间)。所有行存储表的数据都完全存储在内存中,快照和事务日志保存在磁盘上。所有列存储表的数据都存储在磁盘上,使用类似行存储的结构来处理传入列存储的插入


MemSQL 数据库是使用聚合器和叶节点实现的分布式数据库。用于聚合器和叶节点的 MemSQL 二进制文件几乎相同,唯一的区别是用户将节点标识为聚合器或叶。聚合器负责接收 SQL 查询,跨叶节点分解它们,并将结果聚合回客户端。叶节点存储 MemSQL 数据并处理来自聚合器的查询。聚合器和叶节点之间的所有通信都是通过 SQL 语法在网络上完成的。MemSQL 使用散列分区将数据均匀地分布在多个叶节点上。


MemSQL 的内存行存储和磁盘列存储的持久性略有不同。内存行存储的持久性是通过预写日志和快照实现的,类似于检查点。使用默认设置,一旦事务在内存中得到确认,数据库就会以磁盘允许的速度将事务异步写入磁盘。磁盘上的列存储实际上是由一个类似内存行存储的结构(skiplist)前面的。这种结构具有与 MemSQL 行存储相同的持久性保证。除此之外,列存储是持久的,因为它的数据存储在磁盘上。


可以在“高可用性”模式下配置 MemSQL 集群,其中每个数据分区都会在两个单独的叶节点上自动创建主版本和从版本。在高可用性模式下,聚合器将事务发送到主分区,然后主分区将日志发送到从分区。如果主分区发生意外故障,则从分区在完全在线操作中接管为主分区。


MemSQL 附带一个名为 MemSQL Ops 的安装、管理和监控工具。在安装 MemSQL 时,Ops 可用于跨机器设置分布式 MemSQL 数据库,并提供有关运行系统的指标。MemSQL Ops 具有 Web 用户界面和命令行界面。从 2015 年 9 月推出的 MemSQL 4.1 开始,MemSQL 让用户能够安装 Apache Spark 作为 MemSQL 集群的一部分,并使用 Spark 作为 ETL 工具将数据导入 MemSQL。Apache Spark 使用 MemSQL Ops 以交互方式安装和设置。然后,Ops 用户可以定义其数据管道的提取、转换和加载阶段,以将数据导入 MemSQL。运行数据管道的管理和监控可以在 Ops UI 中完成。MemSQL 在新技术的诞生上蓬勃发展。


综上所述,是“什么是MemSQL?”的相关内容。希望今天小编全方位分享的内容能给大家带来帮助。



营销型网站