Skip to content

整理12种数据库相关资料,mysql,mariaDB,Percona Server,MongoDB,Redis,RocksDB,TiDB,CouchDB,Cassandra,TokuDB,MemDB,Oceanbase

Notifications You must be signed in to change notification settings

bangbang00/newsql_nosql_library

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💨🏹🌀 2021年,史上最强的数据库资料集合
12种数据库的全方位整理:mysql,mariaDB,Percona Server,Redis,RocksDB,Cassandra,CouchDB,MongoDB,TokuDB,TiDB,MemDB,Oceanbase






👀 数据库分类

数据库分类对比

英文名 中文名 定义 存储方式 ACID规则支持情况 CAP原理支持情况
Relational database 关系型数据库 采用了关系模型来组织数据的数据库 表格 支持ACID规则 满足CP,但A不完美
NoSQL 非关系型数据库 泛指非关系型的数据库,不保证关系数据的ACID特性 键值存储、列存储、文档存储等 不一定完全支持ACID规则 满足AP,但C不完美
NewSQL NewSQL NewSQL是对各种新的可扩展/高性能数据库的简称 多种存储方式 支持ACID规则 满足CAP

ACID规则

  • 原子性(A) 一个事务的所有系列操作步骤被看成一个动作,所有的步骤要么全部完成,要么一个也不会完成。如果在事务过程中发生错误,则会回滚到事务开始前的状态,将要被改变的数据库记录不会被改变。
  • 一致性(C) 一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏,即数据库事务不能破坏关系数据的完整性及业务逻辑上的一致性。
  • 隔离性(I) 主要用于实现并发控制,隔离能够确保并发执行的事务按顺序一个接一个地执行。通过隔离,一个未完成事务不会影响另外一个未完成事务。
  • 持久性(D) 一旦一个事务被提交,它应该持久保存,不会因为与其他操作冲突而取消这个事务。

CAP原理

  • Consistency(一致性): 数据一致更新,所有数据变动都是同步的
  • Availability(可用性): 好的响应性能
  • Partition tolerance(分区耐受性): 可靠性

举例来说在高可用的网站架构中,对于数据基础提出了以下的要求:

  • 分区耐受性 保证数据可持久存储,在各种情况下都不会出现数据丢失的问题。为了实现数据的持久性,不但需要在写入的时候保证数据能够持久存储,还需要能够将数据备份一个或多个副本,存放在不同的物理设备上,防止某个存储设备发生故障时,数据不会丢失。
  • 数据一致性 在数据有多份副本的情况下,如果网络、服务器、软件出现了故障,会导致部分副本写入失败。这就造成了多个副本之间的数据不一致,数据内容冲突。
  • 数据可用性 多个副本分别存储于不同的物理设备的情况下,如果某个设备损坏,就需要从另一个数据存储设备上访问数据。如果这个过程不能很快完成,或者在完成的过程中需要停止终端用户访问数据,那么在切换存储设备的这段时间内,数据就是不可访问的。


🦩 关系型数据库

关系型数据库,是指采用了关系模型来组织数据的数据库

  1. 关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
  2. 通过SQL结构化查询语句存储数据。
  3. 强调ACID规则, 保持数据一致性。

🦈 MySQL

知识体系 存储引擎 面试题 优化与集群架构 源码与配置参数 视频资源 文章 Paper 电子书籍 常见问题
🌴 🔱 🛠 📜 🧿 📄 🍀 📙 🧲

🌴 知识体系

MySQL体系详解


MySQL体系详解

MySQL架构图


MySQL架构图

MySQL亿级订单数据分库分表设计架构图

image
MySQL亿级订单数据分库分表设计架构图(鑫语人间)

MySQL亿级流量系统设计每秒十万查询的高并发架构图


MySQL亿级流量系统设计每秒十万查询的高并发架构图(石杉)

🔱 存储引擎

  • MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。
  • InnoDB引擎使用B+Tree作为索引结构,叶节点保存了完整的数据记录(数据和索引)。
  • B+树原理详解

MyISAM引擎

MyISAM索引实现

  • MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。

这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复。如果我们在Col2上建立一个辅助索引,则此索引的结构如下图所示:

同样也是一颗B+Tree,data域保存数据记录的地址。因此,MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。 MyISAM的索引方式也叫做“非聚集”的,之所以这么称呼是为了与InnoDB的聚集索引区分。

MyISAM引擎特点
  1. 不支持事务
  2. 表级锁定 数据更新时锁定整个表:其锁定机制是表级锁定,也就是对表中的一个数据进行操作都会将这个表锁定,其他人不能操作这个表,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能。
  3. 读写互相阻塞 不仅会在写入的时候阻塞读取,MyISAM还会再读取的时候阻塞写入,但读本身并不会阻塞另外的读。
  4. 只会缓存索引 MyISAM可以通过key_buffer_size的值来提高缓存索引,以大大提高访问性能减少磁盘IO,但是这个缓存区只会缓存索引,而不会缓存数据。
  5. 读取速度较快 占用资源相对较少
  6. 不支持外键约束,但只是全文索引
  7. MyISAM引擎是MySQL5.5版本之前的默认引擎,是对最初的ISAM引擎优化的产物。
MyISAM引擎适用的生产业务场景
  1. 不需要事务支持的业务(例如转账就不行,充值也不行)
  2. 一般为读数据比较多的应用,读写都频繁场景不适合,读多或者写多的都适合。
  3. 读写并发访问都相对较低的业务(纯读纯写高并发也可以)(锁定机制问题)
  4. 数据修改相对较少的业务(阻塞问题)
  5. 以读为主的业务,例如:blog,图片信息数据库,用户数据库,商品库等业务
  6. 对数据一致性要求不是很高的业务。
  7. 中小型的网站部分业务会用。
  8. 小结:单一对数据库的操作都可以示用MyISAM,所谓单一就是尽量纯读,或纯写(insert,update,delete)等。
MyISAM引擎调优精要
  1. 设置合适的索引(缓存机制)(where、join后面的列建立索引,重复值比较少的建索引等)
  2. 调整读写优先级,根据实际需求确保重要操作更优先执行,读写的时候可以通过参数设置优先级。
  3. 启用延迟插入改善大批量写入性能(降低写入频率,尽可能多条数据一次性写入)。
  4. 尽量顺序操作让insert数据都写入到尾部,较少阻塞。
  5. 分解大的操作,降低单个操作的阻塞时间,就像操作系统控制cpu分片一样。
  6. 降低并发数(减少对MySQL访问),某些高并发场景通过应用进行排队队列机制Q队列。
  7. 对于相对静态(更改不频繁)的数据库数据,充分利用Query Cache(可以通过配置文件配置)或memcached缓存服务可以极大的提高访问频率。
  8. MyISAM的Count只有在全表扫描的时候特别高效,带有其他条件的count都需要进行实际的数据访问。

InnoDB引擎

InnoDB索引实现

  • InnoDB也使用B+Tree作为索引结构,但具体实现方式却与MyISAM截然不同。叶节点保存了完整的数据记录(数据和索引)。

InnoDB的数据文件本身就是索引文件。从上文知道,MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。

上图是InnoDB主索引(同时也是数据文件)的示意图,可以看到叶节点包含了完整的数据记录。这种索引叫做聚集索引。因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。

第二个与MyISAM索引的不同是InnoDB的辅助索引data域存储相应记录主键的值而不是地址。换句话说,InnoDB的所有辅助索引都引用主键作为data域。例如,下图为定义在Col3上的一个辅助索引:

这里以英文字符的ASCII码作为比较准则。聚集索引这种实现方式使得按主键的搜索十分高效,但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。
InnoDB引擎适用的生产业务场景
  1. 支持事务
  2. 行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成。
  3. 数据更新较为频繁的场景,如:BBS(论坛)、SNS(社交平台)、微博等
  4. 数据一致性要求较高的业务,例如:充值转账,银行卡转账。
  5. 硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘IO,可以通过一些参数来设置
  6. 相比MyISAM引擎,Innodb引擎更消耗资源,速度没有MyISAM引擎快
InnoDB引擎调优精要
  1. 主键尽可能小,避免给Secondery index带来过大的空间负担。
  2. 避免全表扫描,因为会使用表锁。
  3. 尽可能缓存所有的索引和数据,提高响应速度,较少磁盘IO消耗。
  4. 在大批量小插入的时候,尽量自己控制事务而不要使用autocommit自动提交,有开关可以控制提交方式。
  5. 合理设置innodb_flush_log_at_trx_commit参数值,不要过度追求安全性。 如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作。
  6. 避免主键更新,因为这会带来大量的数据移动。

其他引擎

⭕ 面试题

🛠 优化与集群架构

📜 源码与配置参数

🧿 视频资源

📄 文章

No. Article Author
1 MySQL远程客户端连接问题 milo
2 亿级订单数据分库分表设计方案 鑫语人间
3 数据库扩展性架构设计
4 分库分表需要考虑的问题及方案
5 无限容量数据库架构设计
6 MQ消息可达性+幂等性+延时性架构设计
7 高可用+高并发+负载均衡架构设计
8 数据库秒级平滑扩容架构方案
9 100亿数据平滑数据迁移,不影响服务
10 一分钟掌握数据库垂直拆分
11 5kw数据量,如何为表增加一列
12 互联网在线表结构变更
13 58同城,1万属性100亿数据量数据库架构设计
14 每秒10万并发 mysql_亿级流量系统架构之如何设计每秒十万查询的高并发架构 清幽梅

📙 电子书籍

书籍 翻译
《MySQL 5.7 Reference Manual》 《MySQL 5.7参考手册》
《MySQL 8.0 Reference Manual》 《MySQL 8.0参考手册》
《MySQL》 《MySQL》
《MySQL Notes For Professionals》 《MySQL专业指南》
《Intrusion Detection with SNORT: Using SNORT, Apache, MySQL, PHP, and ACID》 《Snort入侵检测:使用Snort、Apache、MySQL、PHP和ACID》
《MySQL 从入门到精通》 《MySQL 从入门到精通》
《MySQL Workbench教程》 《MySQL Workbench教程》
《高性能MySQL_中文版》 《高性能MySQL(中文版)》
《高性能MySQL(英文版)》 《高性能MySQL(英文版)》
《MySQL技术内幕:SQL编程》 《MySQL技术内幕:SQL编程》
《MySQL技术内幕:InnoDB存储引擎 第二版》 《MySQL技术内幕:InnoDB存储引擎 第二版》

🍀 Paper

No. Title Translate Company
1 《MySQL V5 - Ready forPrime Time Business Intelligence》 MySQL V5 - 为黄金时段商业智能做好准备
2 《TDSQL for MySQL Security White Paper Product Documentation》 TDSQL for MySQL安全白皮书产品文档
3 《MONGODB VS MYSQL: A COMPARATIVE STUDY OF PERFORMANCE IN SUPER MARKET MANAGEMENT SYSTEM》 MONGODB与MYSQL:超市管理系统性能的比较研究
4 《Optimizing MySQL Database System on Information Systems Research , Publications and Community Service》 在信息系统研究、出版物和社区服务方面优化MySQL数据库系统
5 《A Comparative Study: MongoDB vs MySQL》 MongoDB与MySQL的比较研究
6 《Best Practices for Migrating MySQL Databases to Amazon Aurora》 将MySQL数据库迁移到Amazon Aurora的最佳实践
7 《Comparative Performance Analysis of MySQL and SQL Server Relational Database Management Systems in Windows Environment》 Windows环境下MySQL与sqlserver关系数据库管理系统性能比较分析
8 《MySQL Cluster Internal Architecture》 MySQL集群内部架构
9 《MySQL Database Service with HeatWave》 MySQL数据库服务与HeatWave
10 《Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases》 Amazon Aurora:高通量云本地关系数据库的设计考虑
11 《Recovery Principles of MySQL Cluster 5.1》 MySQL集群的恢复原理

⚒ 集群架构

🧲 常见问题


🐬 MariaDB

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎。
MariaDB直到5.5版本,均依照MySQL的版本。

MariaDB项目

MariaDB与MySQL比较

MariaDB第三方工具

  • DBEdit 一个免费的MariaDB数据库和其他数据库管理应用程序。
  • Navicat 一系列Windows、Mac OS X、Linux下专有数据库管理应用程序。
  • HeidiSQL 一个Windows上自由和开放源码的MySQL客户端。它支持MariaDB的5.2.7版本和以后的版本。[5][6]
  • phpMyAdmin 一个基于网络的MySQL数据库管理应用程序

🐋 Percona Server

Percona Server项目

Percona Server由领先的MySQL咨询公司Percona发布。
Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB。是最接近官方MySQL Enterprise发行版的版本。
Percona提供了高性能XtraDB引擎,还提供PXC高可用解决方案,并且附带了percona-toolkit等DBA管理工具箱。
Percona Server 只包含 MySQL 的服务器版,并没有提供相应对 MySQL 的 Connector 和 GUI 工具进行改进。
Percona Server 使用了一些 google-mysql-tools, Proven Scaling, Open Query 对 MySQL 进行改造。

MySQL,MariaDB,Percona Server如何选择

综合多年使用经验和性能对比,首选Percona分支,其次是MariaDB,如果你不想冒一点风险,那就选择MYSQL官方版本。



🦉 NoSQL数据库

键值(Key-Value)存储数据库

  • 相关产品: Redis、RocksDB
  • 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
  • 数据模型: 一系列键值对
  • 优势: 快速查询
  • 劣势: 存储的数据缺少结构化

🐝 Redis

知识体系 数据类型 面试题 优化与集群架构 源码与配置参数 视频资源 文章 Paper 电子书籍 常见问题
🌴 🛠 📜 🧿 📄 🍀 📙 🧲

🌴 知识体系

Redis知识体系图


Redis知识体系图

Redis Cluster方案图

image
官方Redis Cluster 方案(服务端路由查询)

Redis集群方案(单副本)


Redis集群方案(单副本)

♨ 数据类型

Redis的五大数据类型也称五大数据对象;Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject;
这个对象系统包含了五大数据对象,字符串对象(string)、列表对象(list)、哈希对象(hash)、集合(set)对象和有序集合对象(zset)
而这五大对象的底层数据编码可以用命令OBJECT ENCODING来进行查看。

//redisObjecttypedef struct redisObject {
    // 类型属性存储的是对象的类型,也就是我们说的 string、list、hash、set、zset中的一种,
    // 可以使用命令 TYPE key 来查看。
    unsigned type:4;
    // 编码,记录了队形所使用的编码,即这个对象底层使用哪种数据结构实现。
    unsigned encoding:4;
    // 指向底层实现数据结构的指针
    void *ptr;
    // ...
} robj;

redis是以键值对存储数据的,所以对象又分为键对象和值对象,即存储一个key-value键值对会创建两个对象,键对象和值对象。键对象总是一个字符串对象,而值对象可以是五大对象中的任意一种。 image

⭕ 面试题

🛠 优化与集群架构

Redis集群方式

📜 源码与配置参数

🧿 视频资源

📄 文章

🍀 Paper

No. Title Translate Company
1 《Implementing Information System Using MongoDB and Redis》 利用MongoDB和Redis实现信息系统
2 《15 Reasons to use Redis as an Application Cache》 使用Redis作为应用程序缓存的15个原因
3 《AMAZON ELASTICACHE》 弹性评估
4 《PLeveraging Django and Redis using Web Scraping》 使用网页抓取对Django和Redis进行编辑
5 《Cloud Native at the Edge: High-performance Edge Inference with RedisAI》 边缘原生云:使用RedisAI进行高性能边缘推断
6 《Contrail Architecture》 轨迹结构
7 《Database Caching Strategies Using Redis AWS Whitepaper》 使用Redis AWS白皮书的数据库缓存策略
8 《Deploying a Highly Available Distributed Caching Layer on Oracle Cloud Infrastructure using Memcached & Redis》 使用Memcached和Redis在Oracle云基础架构上部署高可用的分布式缓存层
9 《Scaling Memcache at Facebook》 在Facebook上扩展Memcache
10 《From advert to action: behavioural insights into the advertising of financial products》 从广告到行动:金融产品广告的行为洞察
11 《Persistent Memory Performance in vSphere 6.7》 vSphere 6.7中的持久内存性能
12 《Performance at Scale with Amazon ElastiCache》 使用Amazon ElastiCache实现大规模性能
13 《Redis Enterprise For Financial Services》 Redis金融服务企业
14 《Persisting Objects in Redis Key-Value Database》 在Redis键值数据库中持久化对象
15 《Break the Cost and Capacity Barrier with Intel® Optane™ DC Persistent Memory》 使用Intel®Optane打破成本和容量壁垒™ DC持久存储器
16 《Redistribution, Inequality,and Growth》 再分配、不平等和增长
17 《In-Memory Data processing using Redis Database》 使用Redis数据库进行内存数据处理
18 《USING REDIS WITH SOURCEPRO DB》 将REDIS与SOURCEPRO DB一起使用
19 《Redis on Samsung NVMe Benchmarking Results》 三星NVMe基准测试结果的Redis

📙 电子书籍

🧲 常见问题


🦗 RocksDB

RocksDB特点:

RocksDB是嵌入式持久化存储系统,它是一个单点高性能的存储DB,不是分布式存储系统。 RocksDB能支持非常高吞吐量的IO读写,可以作为大型分布式存储系统元数据的存储媒介,比如Hadoop Ozone就将其元数据使用RocksDB作为元数据的结果写出。

  • 高性能: RocksDB使用一套日志结构的数据库引擎,为了更好的性能,这套引擎是用C++编写的。 Key和value是任意大小的字节流。

  • 为快速存储而优化: RocksDB为快速而又低延迟的存储设备(例如闪存或者高速硬盘)而特殊优化处理。 RocksDB将最大限度的发挥闪存和RAM的高度率读写性能。

  • 可适配性: RocksDB适合于多种不同工作量类型。 从像MyRocks这样的数据存储引擎, 到应用数据缓存, 甚至是一些嵌入式工作量,RocksDB都可以从容面对这些不同的数据工作量需求。

  • 基础和高级的数据库操作: RocksDB提供了一些基础的操作,例如打开和关闭数据库。 对于合并和压缩过滤等高级操作,也提供了读写支持。

  • RocksDB官方网址

  • RocksDB中文网址

RocksDB的典型场景(低延时访问):
  1. 需要存储用户的查阅历史记录和网站用户的应用
  2. 需要快速访问数据的垃圾检测应用
  3. 需要实时scan数据集的图搜索query
  4. 需要实时请求Hadoop的应用
  5. 支持大量写和删除操作的消息队列

🌴 知识体系

RocksDB体系结构

image

####

LSM-Tree

image

RocksDB 5大子模块,分别为:

  • Basic Operation,基本操作定义
  • Terminology,内部术语定义
  • Tool,内部工具
  • Logging/Monitoring ,日志和监控
  • System Behavior,内部系统行为

📄 文章

列存储数据库

  • 相关产品:Cassandra, HBase
  • 典型应用:分布式的文件系统
  • 数据模型:以列簇式存储,将同一列数据存在一起
  • 优势:查找速度快,可扩展性强,更容易进行分布式扩展
  • 劣势:功能相对局限

🦕 Cassandra

Cassandra是开源分布式NoSQL数据库系统。用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身,由于Cassandra良好的可扩展性,现在成为了一种流行的分布式结构化数据存储方案。是一个网络社交云计算方面理想的数据库。

image

特征

  • 分布式
  • 基于column的结构化
  • 高伸展性

Cassandra体系结构

image

核心结构
  • Node 存储数据的地方。它是Cassandra的基础设施组件
  • datacenter 相关节点的集合。数据中心可以是物理数据中心,也可以是虚拟数据中心。不同的工作负载应该使用单独的数据中心,无论是物理的还是虚拟的。复制由数据中心设置。使用单独的数据中心可以防止Cassandra事务受到其他工作负载的影响,并使请求彼此接近以降低延迟。根据复制因子,可以将数据写入多个数据中心。数据中心绝不能跨越物理位置。
  • Cluster 一个集群包含一个或多个数据中心。它可以跨越物理位置。
  • Commit log 为了持久性,所有数据写入之前都要首先写入提交日志(日志写入优先)。所有数据都刷新到SSTables之后,就可以对其进行归档、删除或回收。
  • SSTable(Sorted String Table) 一个SSTable是一个不可变的数据文件,Cassandra定期将memtables写入其中。仅追加SSTables并按顺序存储在磁盘上,并为每个Cassandra表维护SSTables。
  • CQL Table 按表行获取的有序列的集合。一张表由多列组成,并且有一个主键。
核心组件
  • Gossip 一种对等通信协议,用于发现和共享Cassandra集群中其他节点的位置和状态信息。Gossip息也由每个节点本地保存,以便在节点重新启动时立即使用。
  • Partitioner 分区程序确定哪个节点将接收一段数据的第一个副本,以及如何跨集群中的其他节点分发其他副本。每一行数据都由一个主键唯一地标识,主键可能与其分区键相同,但也可能包含其他集群列。Partitioner是一个哈希函数,它从一行的主键派生标记。分区程序使用令牌值来确定集群中的哪些节点接收该行的副本。Murmur3Partitioner是新Cassandra集群的默认分区策略,几乎在所有情况下都是新集群的正确选择。
  • Replication factor 整个集群中的副本总数。副本因子1表示在一个节点上每一行只有一个副本。副本因子2表示每一行有两个副本,其中每个副本位于不同的节点上。所有的副本都同样重要,没有主副本。你可以为每个数据中心定义副本因子。通常,应该将副本策略设置为大于1,但不超过集群中的节点数。
  • Replica placement strategy Cassandra将数据的副本存储在多个节点上,以确保可靠性和容错能力。副本策略决定将副本放在哪个节点上。数据的第一个副本就是第一个副本,它在任何意义上都不是唯一的。强烈建议使用NetworkTopologyStrategy策略,因为在将来需要扩展时,可以轻松扩展到多个数据中心。创建keyspace时,必须定义副本放置策略和所需的副本数。
  • Snitch snitch将一组机器定义为数据中心和机架(拓扑),副本策略使用这些数据中心和机架放置副本。 在创建集群时,必须配置一个snitch。所有的snitch都使用一个动态的snitch层,该层监视性能并选择最佳副本进行读取。它是默认启用的,建议在大多数部署中使用。在cassandra.yaml配置文件中为每个节点配置动态snitch阈值。
  • cassandra.yaml 用于设置集群的初始化属性、表的缓存参数、调优和资源利用率的属性、超时设置、客户端连接、备份和安全性的主要配置文件。

文章


文档型数据库

  • 相关产品:CouchDB、MongoDB、SequoiaDB
  • 典型应用:Web应用(与Key-Value类似,Value是结构化的)
  • 数据模型: 一系列键值对
  • 优势:数据结构要求不严格
  • 劣势: 查询性能不高,而且缺乏统一的查询语法

🦜 CouchDB


🦢 MongoDb



🦊 NewSQL数据库

SQL引擎

🦅 TokuDB

TokuDB介绍

TokuDB 是一个高性能、支持事务处理的 MySQL 和 MariaDB 的存储引擎。TokuDB 的主要特点则是对高写压力的支持。

TokuDB 特性:

  • Up to 25x Data Compression
  • Fast Inserts
  • Eliminates Slave Lag with Read Free Replication
  • Hot Schema Changes
  • Hot Index Creation - TokuDB tables support insertions, deletions and queries with no down time while indexes are being added to that table
  • Hot column addition, deletion, expansion, and rename - TokuDB tables support insertions, deletions and queries without down-time when an alter table adds, deletes, expands, or renames columns
  • On-line Backup

TokuDB发展

TokuDB在 8.0 版本已标记为废除状态,下一个大版本更新将会移除此引擎,官方推荐了性能更优的 MyROcks 引擎。


分布式数据库

🐪 TiDB


🐫 Oceanbase


🐐 MemDB




🤝 鸣谢

为了让我们的repo内容更加的丰富,更加的专业。欢迎大家贡献patch,希望大家在issue里面出谋划策,我们期待你的加入。

联系专栏

零声教育,专注于c/c++Linux后台服务器开发架构技术学习提升。

每天晚上8点【免费技术直播】:分享Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习。

关注微信公众号【后台服务架构师】——【联系我们】,获取本repo最全PDF学习文档!

About

整理12种数据库相关资料,mysql,mariaDB,Percona Server,MongoDB,Redis,RocksDB,TiDB,CouchDB,Cassandra,TokuDB,MemDB,Oceanbase

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published