Cassandra:高可用与分布式NoSQL数据库
3星 · 超过75%的资源 需积分: 10 162 浏览量
更新于2024-08-01
收藏 400KB PDF 举报
"Cassandra是一个分布式NoSQL数据库系统,由Avinash Lakshman和Prashant Malik设计,最初在Facebook内部开发,后成为Apache软件基金会的顶级项目。它旨在处理大量数据并提供高可用性、可扩展性和低延迟的数据存储解决方案。
为什么选择Cassandra?
Cassandra的设计初衷是为了解决大数据量的问题,比如存储大量的用户消息副本、消息的反向索引和个人用户数据。系统需要处理大量的随机读写请求,而且当时市场上没有满足这些需求的成熟解决方案。因此,Cassandra应运而生。
设计目标:
1. 高可用性:Cassandra通过数据复制和分布式架构确保了服务的持续可用,即使部分节点故障也能正常工作。
2. 最终一致性:牺牲强一致性来换取高可用性,允许在网络中不同节点间存在短暂的数据不一致,但最终会达到一致状态。
3. 增量可扩展性:随着数据增长,可以通过添加更多节点轻松扩展集群,无需停机或大规模重构。
4. 乐观复制:使用乐观并发控制策略,先进行操作,然后在后台解决冲突。
5. 调整一致性、持久性和延迟的参数:“旋钮”机制允许用户根据应用需求调整这些特性。
6. 低总体拥有成本:Cassandra的目标是减少管理和硬件成本,支持使用廉价硬件构建大规模集群。
7. 最小化管理:设计简洁,易于管理和维护。
数据模型:
Cassandra的数据模型基于键值对,同时引入了列族(Column Family)的概念。列族可以分为简单列族和超级列族。简单列族按照某一列排序,如MailList,其中每个键对应一个时间戳有序的列列表。超级列族则进一步扩展了这个概念,允许在一个键下有多个子列族,如WordList和System,它们分别按时间和名称排序。
例如:
- MailList列族按名字排序,每个键(如tid1, tid2等)都有与之关联的二进制值和时间戳。
- WordList列族是一个超级列族,按时间排序,每个键(如aloha)下可能包含多个列(Column),每个列有自己的值(Value)和时间戳(TimeStamp)。
- System列族也是一个超级列族,按名称排序,每个键(如hint1, hint2等)下包含多个列列表。
Cassandra是一个针对大数据场景设计的分布式数据库,通过其独特的数据模型和分布式架构,能够处理PB级别的数据,同时提供灵活的可扩展性和高可用性,适合大规模、高并发的互联网应用。
点击了解资源详情
点击了解资源详情
444 浏览量
2021-05-19 上传
2021-02-03 上传
2021-05-01 上传
2021-04-01 上传
112 浏览量
2021-06-28 上传
bluceoy22
- 粉丝: 0
- 资源: 1
最新资源
- Matrix:开发用于使用pygame学习矩阵的教具
- Termy:具有自动完成功能的终端
- Catfish BLOG 鲶鱼博客系统 v2.0.51
- em算法matlab代码-Digital-Device-Design-for-Power-Factor-Calculation:功率因数(PF
- OSEMR-开源
- adb驱动亲测可用解压即可
- GitHub-Health-Project-Article:关于我对免费和开源,非限制性,道德和安全的医疗健康项目的计划和贡献的文章
- disaster_response_NLP_pipeline:用于灾难响应消息分类的NLP管道
- benchdb-accumulation-register:ouchdb的累积寄存器
- keil3/4 采用单片机或ARM控制路灯四季不同天黑时间的路灯开关控制,且能根据节假日单独设置开关时间。
- matlab标注字体代码-figexp:将Matlab图形导出为各种格式
- 西门子ET_200S +6 ES7_131_4BB00外形图.zip
- RxBasicsKata:RxJava学习者的实际挑战
- postgres_dba:缺少用于Postgres DBA和所有工程师的有用工具集
- NetEpi-开源
- typescript-express-static-analysis-template