NewSQL究竟新在哪里?
NewSQL究竟新在哪里?
本文来自技术博客:http://oserror.com/
微信订阅号有置顶功能,欢迎读者置顶架构文摘:ArchDigest
-
为什么需要NewSQL?
-
NewSQL的分类
-
NewSQL的技术挑战有哪些?
-
讨论
-
垂直扩展:使用更好的硬件,来做数据库的服务器
-
水平扩展:采用中间件,做sharding的方式,即分库分表的方式
-
传统关系数据库更倾向于一致性,而在性能和可用性比较差
-
全功能的关系型数据库太重
-
关系模型对于简单的查询太重,不必要
-
性能更好的单个服务器来做数据库服务器
-
中间件层支持分布式事务
-
中间件层往往是比较轻量级的,要实现一致性,必须在中间件层实现分布式事务,这点是非常困难的
-
中间件层本身的高可用很难保证
-
轻松的获得可扩展性
-
能够使用关系模型和事务,应用逻辑会简化很多
-
执行时间短
-
一般只查询一小部分数据,通过使用索引来达到高效查询的目的
-
一般执行相同的命令,使用不同的输入参数
-
从头开始,使用新架构的系统
-
中间件
-
DAAS,数据库即服务
-
无共享存储
-
多节点的并发控制
-
基于多副本做高可用和容灾
-
流量控制
-
分布式查询处理
-
所有的部分都可以为分布式环境做优化,例如查询优化,通信协议优化。例如,所有的NEWSQL DBMS可以直接在节点间发送查询,而不是通过中心节点,例如中间件系统
-
本身负责数据分区,因此,可以把查询发送给有数据的分区,而不是把数据发送给查询。
-
拥有自身的存储,可以指定更复杂的多副本的方式
-
懂该数据库的人少,缺少专业的运维
-
对查询请求做路由
-
分布式事务的协调者
-
数据分布,数据多副本控制,数据分区
-
在本地节点执行中间节点发来的情况,并且返回结果
-
应用通常不需要做变化
-
各个节点还是运行传统数据库,即以磁盘为核心的数据库,对现有的大内存,多核服务器难以高效地利用
-
重复的查询计划和查询优化,在中间件做一次,在各个DBMS做一次
-
用户可以按需使用
-
数据库本身可能使用云产品,例如云存储等,可以较容易的实现可扩展性
-
Amazon Aurora
-
ClearDB
-
数据库需要能在多个分区执行SQL,并且合并数据结果的功能。
-
把同一个用户的数据可以放在一起,即使是不同数据表的数据,可以减少通信开销。
-
可以在线的添加或者删除机器。
-
可以在线的迁移或复制分区。
-
中心节点:单点,容量限制
-
非中心节点:需要时钟的同步
1 | But what makes Spanner differ- ent is that it uses hardware devices (e.g., GPS, atomic clocks) for high-precision clock synchronization. The DBMS uses these clocks to assign timestamps to transactions to enforce consistent views of its multi-version database over wide-area networks. CockroachDB also purports to provide the same kind of consistency for transactions across data centers as Span- ner but without the use of atomic clocks. They instead rely on a hybrid clock protocol that combines loosely synchronized hardware clocks and logical counters [41]. |
-
2PL:two phase locking
-
MVCC: Multiversion Concurrency Control
-
OCC: Optimistic Concurrency Control
-
每个partition有一部分索引数据,每次修改索引,只需要修改一个节点,但查找数据需要可能涉及多个节点
-
每个partition都有完整的索引数据,每次修改索引,都需要使用分布式事务,修改所有包含此索引副本的节点,查找数据只需要在一个节点
-
如何保证一致性:Paxos和2PC(跨Partition)
-
同步的方式:采用同步执行命令的方式,还是同步状态的方式
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
