dynamo-cassandra
NoSQL应用场景及Canssandra架构分析

BASE下的2PC
z Before
¾ 两阶段提交到DB1和DB2
客户端的可用性与DB1、DB2耦合 通信延迟发生在DB1、DB2
z After
¾ 单阶段提交到DB1
客户端仅依赖DB1
¾ 异步协调
延迟降低 提高可用性
NoSQL模型
z 决策的源头是业务场景 z NoSQL VS 团购
¾ 百Q大战 ¾ 只有少数技术优秀的NoSQL会坚持到最后 ¾ 坚决不选择稳定性差、没有任何技术含量的产品
Cassandra
BigTable带来了NoSQL思想,Cassandra将其推向顶峰,并 引领了NoSQL潮流,作为Dynamo的追随者,Cassandra为 业界奉献了诸多优秀的技术,我们再次重申Cassandra的特 点: z Distributed and Decentralized z Elastic Scalability z High Availability and Fault Tolerance z Tunable Consistency
z SSTable ¾ 不允许之间修改 ¾ 修改也作为追加写 ¾ 同一Column Family会存在多个SSTable
数据查询(Bloom Filter算法)
z 同一Column Family的数据会存在多个SSTable中,查询 需要检索多个SSTable,对性能有巨大损伤
z 采用Bloom Filter算法快速判断查找的key落在哪个几个 SSTable中
数据compaction
z 为了减少SSTable的数量,Cassandra会定期对SSTable 做合并(compaction)操作
Web 3.0 — 人、机、物融合的大数据时代

* 摘自李德毅院士于2012年5月23日在云计算大会上的讲话,略有修改
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
系统软件的改变之大数据存储 —— NoSQL(1) NoSQL的出现背景
大数据引发的问题
对数据库高并发读写的需求 对海量数据的高效率存储和访问的需求 对数据库的高可扩展性和高可用性的需求
面向大数据的OS目前还没有成熟
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
提纲 什么是大数据?
大数据从何而来?
大数据向何而去? 系统软件如何迎接大数据时代? 大数据驱动的Web 3.0展望
中国科学院软件研究所
提纲 什么是大数据?
大数据从何而来?
大数据向何而去? 系统软件如何迎接大数据时代? 大数据驱动的Web 3.0展望
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
提纲 什么是大数据?
大数据从何而来?
大数据向何而去? 系统软件如何迎接大数据时代? 大数据驱动的Web 3.0展望
NoSQL的普及
Google-----BigTable(谷歌三驾马车之一), Leveldb Facebook-----Cassandra Vmware------Redis Oracle-----NoSQL Aamazon-----Dynamo,DynamoDB IBM------基于DB2的NOSQL 雅虎-----HBase 微软-----Trinity 新浪-----KV originally by Doug Laney, analyst from Gartner.
DynamoDB和MongoDB分析比较

DynamoDB和MongoDB分析⽐较DynamoDB是Amazon最新发布的NoSQL产品。
本⽂在介绍DynamoDB特性的基础上,将其与SimpleDB、Cassandra和MongoDB进⾏了分析和⽐较。
DynamoDB简介在NoSQL概念⽇益⽕爆的今天,市场上⼜增加了⼀个重量级的NoSQL产品—DynamoDB,它是Amazon AWS于2012年1⽉18⽇发布的。
⼀看到这个名称,很多⼈都会想起2007年Amazon发表的Dynamo论⽂。
⼈们经常将这篇论⽂与Google的BigTable 相提并论,这在当时带来了相当⼤的影响,很多产品都借鉴了Dynamo的思想,⽐如Cassandra。
那什么是DynamoDB呢?按照AWS CTO Werner Vogels的说法:“DynamoDB是⼀个性能好、可靠⾼且具有可扩展性的NoSQL云数据库服务,DynamoDB集15年分布式⾮关系性数据库开发之精粹,⼜通过内部使⽤考验,是AWS团队精⼼打造的产品。
”本⽂将通过DynamoDB的特性、数据模型,以及API来进⾏深⼊的介绍。
从官⽅⽂档来看,DynamoDB有以下⼏个特性。
稳定的性能保证。
为了保证⾼性能,DynamoDB采⽤固态硬盘(SSD)进⾏存储,对于⼀般的请求,DynamoDB在⼗毫秒内就可以完成,⽽且处理请求的速度不会随着数据量的增加⽽减慢。
读/写流量限制预设(Provisioned Throughput)。
这个概念和我们经常接触的按带宽收费⾮常相像,⽤户必须指定对数据库的读/写带宽,Amazon会按⽤户设置的读/写带宽收费。
但与传统的带宽收费不同,⽤户可以随时通过控制台或者API更改数据库的读/写流量的限制。
⾃动扩容。
DynamoDB不会对⽤户的数据规模⼤⼩做任何限制,后台会默默地把⽤户的数据分布到各个机器上去。
强⼀致性。
⽤户可以通过参数指定要读的数据是否需要⼀致性。
这⾥需要注意的是,如果读的数据全是要求强⼀致性的话,那么在设置读流量上限时需要设置成实际读流量的两倍。
云计算环境下的分布存储关键技术

网络通讯及安全本栏目责任编辑:代影云计算环境下的分布存储关键技术谢起朝(福州工商学院,福建福州350715)摘要:云计算技术目前已经在科学技术和商业领域发挥了重要作用。
云计算环境下的分布式存储技术是云计算的核心技术之一。
本文对云计算环境下的分布式存储关键技术开展研究,首先详细介绍了分布式存储中常见的数据中心网络结构,包括以交换机为中心的结构、以服务器为中心的结构和混合结构,然后分析了数据容错技术,包括基于复制的容错技术和基于纠删码的容错技术。
关键词:云计算;分布式存储;数据中心网络;数据容错中图分类号:TP393文献标识码:A文章编号:1009-3044(2021)03-0059-02开放科学(资源服务)标识码(OSID ):1引言近年来,信息技术高速发展,为社会和科学的进步与发展提供了强劲动力。
云计算技术是近年来较为典型的新兴技术之一,已经在各个行业发挥了巨大作用。
在云计算中,数据中心是基础,基于数据中心才可提供各种业务操作,服务提供商才能从中盈利。
云计算环境下的存储技术是十分关键的技术之一,该技术领域的研究点主要包括数据中心中数据的安全存储、高效组织和有序管理,并向用户提供数据存储服务,在研究数据存储技术时,还需同时关注数据中心网络的构建和设备运营的耗能问题[2]。
2数据中心网络数据中心是云计算技术对用户提供服务的基础。
在数据中心中,根据节点在路由转发功能的类型,可以将数据中心的网络分为以交换机为中心、以服务器为中心和混合结构。
下面对这三种结构进行详细介绍。
2.1以交换机为中心的结构在这种结构中,交换机作为整个网络构建的中心,把多个服务器连接起来,并承担数据转发功能,可进一步分为传统的树型结构和改进的树型结构两类[3]。
其中,传统的树型结构以交换机为中心,分为边缘、聚合和核心三层。
传统树型结构存在的主要问题包括:(1)带宽有限,在传统的树形结构中,由于用户在访问服务器时需要通过上层的路由器进行数据转发,因此,当路由器的吞吐量较大时,上层链路往往由于带宽不足,无法将任务分配给其他服务器。
详解数据存储的六种可选技术

热数据需要在内存中存储和处理,因此适合用缓存或内存数据库(如Redis 或SAP Hana)。
AWS提供了ElastiCache服务,可生成托管的Redis或Memcached环境。
NoSQL数据库是面向高速但小规模记录(例如,用户会话信息或物联网数据)的理想选择。
NoSQL数据库对于内容管理也很有用,可以存储数据目录。
01结构化数据存储结构化数据存储已经存在了几十年,是人们最熟悉的数据存储技术。
大多数事务型数据库(如Oracle、MySQL、SQL Server和PostgreSQL)都是行式数据库,因为要处理来自软件应用程序的频繁数据写入。
企业经常将事务型数据库同时用于报表,在这种情况下,需要频繁读取数据,但数据写入频率要低得多。
随着数据读取的需求越来越强,有更多的创新进入了结构化数据存储的查询领域,比如列式文件格式的创新,它有助于提高数据读取性能,满足分析需求。
基于行的格式将数据以行的形式存储在文件中。
基于行的写入方式是将数据写入磁盘的最快方式,但它不一定能最快地读取,因为你必须跳过很多不相关的数据。
基于列的格式将所有的列值一起存储在文件中。
这样会带来更好的压缩效果,因为相同的数据类型现在被归为一组。
通常,它还能提供更好的读取性能,因为你可以跳过不需要的列。
我们来看结构化数据存储的常见选择。
例如,你需要从订单表中查询某个月的销售总数,但该表有50列。
在基于行的架构中,查询时会扫描整个表的50个列,但在列式架构中,查询时只会扫描订单销售列,因而提高了数据查询性能。
我们再来详细介绍关系型数据库,重点介绍事务数据和数据仓库处理数据分析的需求。
(1)关系型数据库RDBMS比较适合在线事务处理(OLTP)应用。
流行的关系型数据库有Oracle、MSSQL、MariaDB、PostgreSQL等。
其中一些传统数据库已经存在了几十年。
许多应用,包括电子商务、银行业务和酒店预订,都是由关系型数据库支持的。
Cassandra简介

近10年来,互联网得到了空前的发展,数据量翻了数百倍;同时互联网内容的创作方式也由传统的中心化逐步转向用户创作。
网络应用的用户量数以亿记,需要处理的数据打到T级甚至是P 级,传统的基于关系型数据库的应用难以应付超高的访问压力和超大的数据量。
许多深有远见的网络公司分别研发了各自的分布式存储系统以应对互联网的发展;其中的先驱和代表是Google 的Bigtable、GFS和Amazon的Dynamo;它们分别达到了互联网应用7×24的高可用性(High Availability)和水平可扩展(High Scalablity)要求,并成为Google和Amazon云计算的可靠基石。
Cassandra 就是基于Google Bigtable的数据模型和Dynamo的数据分布思想的开源实现。
Cassandra最初是由Facebook开发的,后来开源,贡献给Apache,目前由apache开发和维护。
Cassandra 的基因来自于Bigtable和Dynamo,而Bigtable和Dynamo都是基于著名的Eric Brewer的CAP理论设计的。
Brewer的CAP理论认为,在一个共享数据系统(数据分布式存储)里,最多只能获得数据一致性(C-consistency)、数据可用性(A-availability)、分区容忍性(P-partition tolerance)中的两个特性。
一致性(C)指的是当一个写操作完成后,后续的读操作都能够读到更新后的数据。
可用性(A)指的是当某些存储节点失效时,客户端发起的读写请求仍然能够获取正确的响应,读写操作仍然有效。
分区容忍性(P)指的是存储节点之间的网络连接断开后,存储系统仍然能够进行正常的读写操作,即系统对节点连接断开是能够容忍的。
以oracle RAC为例,假如有两个RAC节点。
Oracle 作为业界牛b的关系型数据库,必然具有强一致性(C),因此它不可能同时具有可用性和分区容忍性,当其中一个rac节点失效了,整个rac集群的写入操作将不可用(否则会发生数据不一致,这是oracle不能容忍的),同样rac 节点之间的网络阻断了,整个集群的写入操作也是不可用的,因此oracle rac为了保证其ACID (强一致性)牺牲了一定的可用性和分区容忍性。
HBase vs Cassandra架构、技术模型、特性对比

HBase vs Cassandra目录1. 架构比较2. 数据模型比较3. 特性比较4. Cassandra优缺点HBaseHBase是一个开源的分布式存储系统。
他可以看作是Google的Bigtable的开源实现。
如同Google的Bigtable使用GoogleFile System一样,HBase构建于和Google File System类似的Hadoop HDFS之上。
CassandraCassandra可以看作是AmazonDynamo的开源实现。
和Dynamo不同之处在于,Cassandra结合了GoogleBigtable的ColumnFamily的数据模型。
可以简单地认为,Cassandra是一个P2P的,高可靠性并具有丰富的数据模型的分布式文件系统。
架构比较特性比较由于HBase和Cassandra的数据模型比较接近,所以这里就不再比较两者之间数据模型的异同了。
接下来主要比较双方在数据一致性、多拷贝复制的特性。
HBaseHBase保证写入的一致性。
当一份数据被要求复制N份的时候,只有N份数据都被真正复制到N 台服务器上之后,客户端才会成功返回。
如果在复制过程中出现失败,所有的复制都将失败。
连接上任何一台服务器的客户端都无法看到被复制的数据。
HBase提供行锁,但是不提供多行锁和事务。
HBase 基于HDFS,因此数据的多份复制功能和可靠性将由HDFS提供。
HBase和MapReduce天然集成。
Cassandra写入的时候,有多种模式可以选择。
当一份数据模式被要求复制N份的时候,可以立即返回,可以成功复制到一个服务器之后返回,可以等到全部复制到N份服务器之后返回,还可以设定一个复制到quorum份服务器之后返回。
Quorum后面会有具体解释。
复制不会失败。
最终所有节点数据都将被写入。
而在未被完全写入的时间间隙,连接到不同服务器的客户端有可能读到不同的数据。
在集群里面,所有的服务器都是等价的。
Windows下的Cassandra 安装图文教程

Windows下的Cassandra 安装图文教程Cassandra简介(注:该段介绍来自baidu百科)Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。
其主要功能比Dynomite (分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。
支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。
)Cassandra最初由Facebook开发,后转变成了开源项目。
它是一个网络社交云计算方面理想的数据库。
以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。
P2P去中心化的存储。
很多方面都可以称之为Dynamo 2.0。
功能Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。
对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。
这里有很多理由来选择Cassandra用于您的网站。
和其他数据库比较,有三个突出特点:模式灵活:使用Cassandra,像文档存储,你不必提前解决记录中的字段。
你可以在系统运行时随意的添加或移除字段。
这是一个惊人的效率提升,特别是在大型部署上。
真正的可扩展性:Cassandra是纯粹意义上的水平扩展。
为给集群添加更多容量,可以指向另一台电脑。
你不必重启任何进程,改变应用查询,或手动迁移任何数据。
多数据中心识别:你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• get()
– the coordinator requests all existing versions of data for that key from the N highest-ranked reachable nodes in the preference list for that key, a – waits for R responses before returning the result to the client. – If the coordinator ends up gathering multiple versions of the data, it returns all the versions it deems to be causally unrelated. The divergent versions are then reconciled and the reconciled version superseding the current versions is written back.
12
Replication(3/4)
• Cassandra system elects a leader amongst its nodes using a system called Zookeeper • All nodes on joining the cluster contact the leader who tells them for what ranges they are replicas for • The leader makes a concerted effort to maintain the invariant that no node is responsible for more than N-1 ranges in the ring. • The metadata about the ranges a node is responsible is cached locally at each node and in a fault-tolerant manner inside Zookeeper • This way a node that crashes and comes back up knows what ranges it was responsible for.
Middle Layer
Commit log Memtable
Top Layer
Tombstones Hinted handoff Read repair
7
Partition(1/3)
• Consistent Hash Table
8
Partition(2/3)
• Problems:
– the random position assignment of each node on the ring leads to non-uniform data and load distribution – the basic algorithm is oblivious to the heterogeneity in the performance of nodes.
Handling permanent failures
• Replica synchronization: anti-entropy
– To detect the inconsistencies between replicas faster and to minimize the amount of transferred data
10
Replication(1/4)
• high availability and durability • replication_factor:N
11
Replication(2/4)
• Strategy
– Rack Unaware – Rack Aware – Datacenter Aware –…
• Bigtable-like features
– Column family – SSTable disk storage
• Commit log • Memtable • Immutable Sstable files
3
Data Model(1/2)
• A table is a distributed multi dimensional map indexed by a key
Cassandra
chengxiaojun
1
Backend
• Amazon Dynamo • Facebook Cassandra(Dynama 2.0)
– Inbox search
• Apache
2
Cassandra
• Dynamo-like features
– – – – Symmetric, P2P architecture Gossip-based cluster management DHT Eventual consistency
13
Replication(4/4)
• Cassandra provides durability guarantees in the presence of node failures and network partitions by relaxing the quorum requirements
14
Data Versioning
• Vector clocks
15
Consistency
W+R>N
16
Consistency
• put() :
– the coordinator generates the vector clock for the new version and writes the new version locally. – The coordinator then sends the new version (along with the new vector clock) to the N highest-ranked reachable nodes. – If at least W-1 nodes respond then the write is considered successful.
• Wiki:
– /cassandra/API
6
Architecture Layers
Core Layer
Messaging service Gossip Failure detection SSTable Cluster state Partitioner Replication Indexes Compaction Bootstrap Monitoring Admin tools
are converted to this range by MD5 hashing for comparison with Tokens.
– NetworkTopologyStrategy:calculate the tokens the nodes in
each DC independently. Tokens still needed to be unique, so you can add 1 to the tokens in the 2nd DC, add 2 in the 3rd, and so on.
Cassandra Consistency For Read
Level ANY Behavior Not supported. You probably want ONE instead. Will return the record returned by the first replica to respond. A consistency check is always done in a background thread to fix any consistency issues when ConsistencyLevel.ONE is used. This means subsequent calls will have correct data even if the initial read gets an older value. (This is called ReadRepair) Will query all replicas and return the record with the most recent timestamp once it has at least a majority of replicas (N / 2 + 1) reported. Again, the remaining replicas will be checked in the background. Returns the record with the most recent timestamp once a majority of replicas within the local datacenter have replied. Returns the record with the most recent timestamp once a majority of replicas within each datacenter have replied. Will query all replicas and return the record with the most recent timestamp once all replicas have replied. Any unresponsive replicas will fail the operation.
9