分库分表
分库分表通常运用的场景多产生于:
- IO瓶颈:网络IO瓶颈,请求的数据太多,网络带宽不够
- CPU瓶颈:单表数据量太大,查询时扫描的行太多,SQL效率低,CPU率先出现瓶颈
数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。
数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。
1. 垂直切分
垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的数据库,每个微服务对应的数据库 。
2. 水平切分
当一个应用难以再细粒度的垂直切分,或切分后数据量行数巨大,存在单库读写、存储性能瓶颈,这时候就需要进行水平切分了
水平切分分为库内分表和分库分表,是根据表内数据内在的逻辑关系,将同一个表按不同的条件分散到多个数据库或多个表中。
分布式数据库和NewSQL
目前主流的分布式NewSQL数据库:TiDB、TDSQL、Oceanbase、Spanner等
分布式数据库是一种把数据分散存储在不同物理位置的数据库,它将数据分布在多个计算机节点上,这些节点通过网络相互连接,共同协作以实现数据管理和访问。
NewSQL 是一个术语,用来描述一类数据库系统,这些系统旨在结合传统关系型数据库(SQL数据库)的ACID事务支持和SQL查询能力与NoSQL数据库的水平扩展性(horizontally scalability)。
分布式数据库与NewSQL概念的不同
NewSQL数据库的设计目标是为了应对大规模数据处理场景下对高性能、高可用性和灵活性的需求。
它们通常采用现代硬件和技术,如分布式处理、内存计算、多核CPU优化等,来实现比传统关系型数据库更好的扩展性和性能。
分布式数据库可以是任何设计用于在多台计算机上存储和管理数据的数据库技术,包括但不限于NewSQL数据库。
分布式数据库的目标是通过并行处理和数据分区(如分片)来提高系统的处理能力和可用性。
分布式数据库不仅限于关系型模型,也可以是非关系型(NoSQL)或其他数据模型。
尝试OceanBase
可以尝试使用一下国产的OceanBase数据库社区版
https://open.oceanbase.com/quickStart?
因为我懒 这边就不多介绍了