首页 > 数据库 >Cassandra——类似levelDB的基于p2p架构的分布式NOSQL数据库

Cassandra——类似levelDB的基于p2p架构的分布式NOSQL数据库

时间:2023-06-01 10:00:43浏览次数:66  
标签:数据中心 levelDB NOSQL 写入 p2p Cassandra 数据 节点 分布式

 C: Consistency 一致性

• A: Availability 可用性(指的是快速获取数据)

• P: Tolerance of network Partition 分区容忍性(分布式)

10年前,Eric Brewer教授指出了著名的CAP理论,后来Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性。CAP理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。

BASE模型反ACID模型,完全不同ACID模型,牺牲高一致性,获得可用性或可靠性: BasicallyAvailable基本可用。支持分区失败(e.g. sharding碎片划分数据库) Soft state软状态状态可以有一段时间不同步,异步。 Eventually consistent最终一致,最终数据是一致的就可以了,而不是时时一致。

Cassandra是什么

Cassandra 的名称来源于希腊神话,是特洛伊的一位悲剧性的女先知的名字,因此项目的Logo是一只放光的眼睛。

Cassandra是一个高可靠的大规模分布式存储系统。高度可伸缩的、一致的、分布式的结构化key-value存储方案,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。2007由facebook开发,2009年成为Apache的孵化项目。

Cassandra使用了Google BigTable的数据模型,与面向行的传统的关系型数据库不同,这是一种面向列的数据库,列被组织成为列族(Column Family),在数据库中增加一列非常方便。对于搜索和一般的结构化数据存储,这个结构足够丰富和有效。

Cassandra的系统架构与Dynamo一脉相承,是基于O(1)DHT(分布式哈希表)的完全P2P架构,与传统的基于Sharding的数据库集群相比,Cassandra可以几乎无缝地加入或删除节点,非常适于对于节点规模变化比较快的应用场景。

Cassandra的数据会写入多个节点,来保证数据的可靠性,在一致性、可用性和网络分区耐受能力(CAP)的折衷问题上,Cassandra比较灵活,用户在读取时可以指定要求所有副本一致(高一致性)、读到一个副本即可(高可用性)或是通过选举来确认多数副本一致即可(折衷)。这样,Cassandra可以适用于有节点、网络失效,以及多数据中心的场景。

3. Cassandra特点

总结Cassandra的主要特点如下:

(1) 列表数据结构

在混合模式可以将超级列添加到5维的分布式Key-Value存储系统。

(2) 模式灵活

使用Cassandra,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。

(3) 真正的可扩展性

Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以增加动态添加节点即可。你不必重启任何进程,改变应用查询,或手动迁移任何数据。

(4) 多数据中心识别

你可以调整节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。

(5) 范围查询

如果你不喜欢全部的键值查询,则可以设置键的范围来查询。

(6) 分布式写操作

你以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。

 

吸引我选择Cassandra作为NoSQL的原因主要有如下三点:

极高的读写性能

Cassandra写数据时,首先会将请求写入Commit Log以确保数据不会丢失,然后再写入内存中的Memtable,超过内存容量后再将内存中的数据刷到磁盘的SSTable,并定期异步对SSTable做数据合并(Compaction)以减少数据读取时的查询时间。因为写入操作只涉及到顺序写入和内存操作,因此有非常高的写入性能。而进行读操作时,Cassandra支持像LevelDB一样的实现机制,数据分层存储,将热点数据放在Memtable和相对小的SSTable中,所以能实现非常高的读性能。

简单的部署结构

相对Hbase等的主从结构,Cassandra是去中心化的P2P结构,所有节点完全一样没有单点,对小公司来说,我完全可以选择数据复制份数为2,先用两三台机器把Cassandra搭起来,既能保证数据的可靠性也方便今后机器的扩展,而Hbase起码得四五台机器吧。以后为了更好地支持客户可能需要在多个地方建立数据中心,而Cassandra对多数据中心的支持也很好,可以方便地部署多个数据中心,今早还看到一个俄罗斯最大电信公司的案例。另外我们的机器现在托管在一个小机房里,万一到时机器满了无法增加要考虑搬迁机房时,使用多数据中心的方式也能做到无缝迁移。

和Spark的结合

Cassandra作为一个底层的存储系统,能够方便地和Spark集成进行实时计算,这一点对我们的业务场景有致命的吸引力,我看到国外有很多使用案例就是用Spark+Cassandra来实现Velocity计算,比如Ooyala

 

有时间再细看下其架构和底层原理:

http://blog.jobbole.com/98970/

http://zqhxuyuan.github.io/2015/08/25/2015-08-25-Cassandra-Architecture/

标签:数据中心,levelDB,NOSQL,写入,p2p,Cassandra,数据,节点,分布式
From: https://blog.51cto.com/u_11908275/6392506

相关文章

  • NoSQL数据库简介
    利用nginx做反向代理分布式集群存在session如何存储的问题?1、存储到客户端cookie,不安全,网络负担效率低2、存在文件服务器或者数据库里,大量的IO效率问题2、session复制,session数据冗余,节点越多浪费越大3、NoSQL数据库,缓存数据库,完全存在内存中,速度快,数据结构简单NoSQL作为缓存......
  • 使用 Async Rust 构建简单的 P2P 节点
    使用AsyncRust构建简单的P2P节点P2P简介P2P:peer-to-peerP2P是一种网络技术,可以在不同的计算机之间共享各种计算资源,如CPU、网络带宽和存储。P2P是当今用户在线共享文件(如音乐、图像和其他数字媒体)的一种非常常用的方法。Bittorrent和Gnutella是流行的文件共享......
  • MATLAB代码:p2p 微电网 MADRL 多智体强化学习 关键词:p2p 微电网 MA
    MATLAB代码:p2p微电网MADRL多智体强化学习关键词:p2p微电网MADRL多智体强化学习IEEETSG参考文档:《Peer-to-PeerEnergyTradingandEnergyConversioninInterconnectedMulti-EnergyMicrogridsUsingMulti-AgentDeepReinforcementLearning》2021SCI一区IEEETrans......
  • 【大揭秘】SQL与NoSQL数据库的优缺点全面对比!一篇文章帮助你轻松解决选择困难症!
    从分析师、工程师到IT决策者,许多人都熟悉关系数据库管理系统(rDBMS)和用于与它们交互的SQL(SQL)。虽然这些术语指的是一个几十年的范式,仍然是一个广泛使用的标准,今天的纯粹的多样性和数据库系统的深度可以令人眼花缭乱。更重要的是,不断增长的各种数据(尤其是非结构化数据数据)......
  • leveldb无法在wsl1中使用
    1、WSL1不支持FUSE文件系统,因此无法在WSL1中直接使用LevelDB。LevelDB使用FUSE来提供基于文件的存储,因此在WSL1中无法正常运行。但是,您仍然可以在WSL1上使用Leveldb的API,只需将数据存储在本地文件系统中即可。这意味着您需要使用本地Windows文件系统或其他支持......
  • leveldb armlinx交叉编译
    首先安装所有依赖,在linux下可以直接编译成功,在armlinux低版本编译器(由于系统限制,只能使用这个版本)下有点问题。1、在CMakeLists.txt中增加set(CMAKE_C_COMPILER"/xxxxxx/arm-linux-gnueabihf-gcc")set(CMAKE_CXX_COMPILER"/xxxxxx/arm-linux-gnueabihf-g++")2、编译报错......
  • 【人工智能AI】五、NoSQL 应用实践《NoSQL 企业级基础入门与进阶实战》
    帮我写一篇介绍NoSQL的技术文章,文章的标题是《五、NoSQL应用实践》,不少于3000字。目录需要细化到三级目录,使用markdown格式。这篇文章的大的目录是:五、NoSQL应用实践5.1NoSQL实时数据分析5.2NoSQL分布式系统5.3NoSQL实时推荐系统5.4本章总结五、NoSQL应用实践NoSQL(N......
  • 【图文详解】一文全面彻底搞懂HBase、LevelDB、RocksDB等NoSQL背后的存储原理:LSM-tree
    LSM树广泛用于数据存储,例如RocksDB、ApacheAsterixDB、Bigtable、HBase、LevelDB、ApacheAccumulo、SQLite4、Tarantool、WiredTiger、ApacheCassandra、InfluxDB和ScyllaDB等。在这篇文章中,我们将深入探讨LogStructuredMergeTree,又名LSM树:许多高度可扩展的NoSQL分......
  • MATLAB代码:基于非对称纳什谈判的多微网P2P电能交易策略
    MATLAB代码:基于非对称纳什谈判的多微网P2P电能交易策略关键词:纳什谈判合作博弈 微网电转气-碳捕集 P2P电能交易交易   参考文档:加好友获取仿真平台:MATLABCPLEX+MOSEKIPOPT主要内容:该代码主要做的是微网间基于非对称纳什谈判的P2P电能交易共享问题,基于纳什谈判理论......
  • 基于交替方向乘子法与纳什谈判的社区微网电能共享模型 代码主要做的是一个社区微网内
    基于交替方向乘子法与纳什谈判的社区微网电能共享模型主要内容:代码主要做的是一个社区微网内部产消者之间P2P电能交易与共享的问题。构建了基于合作博弈多产消者电能共享模型,在社区微网储能装置的约束下进行P2P电能交易,以社会福利最大化为目标函数,构建了P2P交易模型,并通过ADMM法......