赞
踩
tidb是分布式关系型数据库;需要从两个方面来理解tidb:
集中式系统,计算和存储在同一个节点上;
分布式系统,计算和存储位于不同的节点上;分布式系统把需要进行大量计算的工程数据分割成若干个小块,有多台计算机分别进行计算和存储,然后将结果统一合并到数据结论的科学;本质上就是进行数据存储与计算的分治;
故障率会更高;计算、存储需要冗余;
需要考虑节点之间的协调;调度中心;
一致性,all nodes see the same data at the same time;
可用性,reads and writes always succeed; 服务在正常响应时间内的可用;
分区容错性,节点或者网络分区故障时,依然能够提供一致性或者可用性服务。
redis cluster满足AP原则;
tidb满足CA原则,强一致性和高可用。
关系型数据库的关键在于一定要具备事务;Nosql数据库无法支持完备的事务;
事务的前提是并发;
事物的本质是并发控制的单元,是用户定义的一个操作序列;这些操作要么都做,要么都不做,是一个不可分割的工作单位;
目的是为了保证数据库系统始终处于完整性和正确性的状态。
事务包含的全部操作是一个不可分割的整体;要么都执行,要么都不执行;
事务的前后,所有的数据都保持一个一致的状态;不能违反数据的一致性检测;
避免串行化,使用MVCC和锁,一定程度破坏一致性;tidb使用snapshot isolation隔离级别,不存在幻读问题,但引入写偏移问题;
分布式数据库除了要进行本地数据存储,还要考虑网络备份。
tidb最初是用来替换数据库扩容Mycat这种解决方案的。
Mycat解决的问题:
Mycat proxy做了哪些事情?
Mycat解决方案非常复杂,对运维来说增加节点、删除节点,数据迁移和数据管理非常麻烦;对于程序来说业务拆分也非常麻烦。
客户端连接tidb server;tidb server负责计算,不存储数据,是无状态的;可以启动多个tidb server,可以再前面加一层haproxy,进行负载均衡;statistics数据来源于tikv,tikv有并行计算MPP;
存储集群的元数据,对集群进行管理;存储每个tikv节点实时的数据分布情况(如节点的region范围)和集群的整体拓扑结构;提供tso, timestamp oracle,统一的事务id;
负责存储数据;基于region;有并行计算功能;
TiFlash是一类特殊的存储节点;列式存储,只存储某些列;用于OLAP,数据分析,对某一列数据进行分析;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。