Cassandra与MongoDB:哪个更适合大数据?

Apache Cassandra与MongoDB谁更适合大数据。这两个系统都用于存储大数据,但它们的表现却截然不同。

如果你想了解大数据管道所需的数据库接收器,那么本文能让你对Cassandra和MongoDB有所了解。

Cassandra与MongoDB

我们将比较Apache Cassandra与MongoDB,看看哪一个满足你的需求。

两种解决方案都为你存储数据,但它们以不同的方式执行。Cassandra使用与数据库表非常相似的东西存储数据,MongoDB使用“文档”存储数据。

Apache Cassandra

显然,两个系统都为你存储数据,这是它们的相似之处。其次,两个系统都以分布式方式存储数据。

Cassandra使用PRIMARY KEY分发数据。每个主键值使用单个分区。这意味着它每个分区只能存储一行数据。

如果你有大量数据由数千或数百万行组成,则不是很有用。为了适应这种情况,Cassandra表可以拥有一个唯一值的CLUSTERING KEY,并使Cassandra能够为每个分区存储多行。

例如,这张Cassandra表格表示零售店的购买情况。

Cassandra与MongoDB:哪个更适合大数据?

这表明每个商店位置都有一个ID,这就成了PRIMARY KEY。但请记住,由于Cassandra以分布式方式存储数据的方式,这只给我们一行。每个PRIMARY KEY值都分配了一个分区。

Cassandra获取该主键值并在其上放置哈希值并为其分配一个节点来存储数据。这就是Cassandra如此快速地查找值的方式。

要获得更多行,需要拥有包含唯一值的CLUSTERING KEY。具有唯一集群键值的行将与主键存储在同一节点上。

这使得数据建模比你可能习惯的更复杂一些。你会发现你不能像在普通的SQL系统中那样创建表,并且能够以相同的方式查询数据。

Cassandra是我决定成为我的数据接收器的选项,我的日志管道由Kafka,Cassandra和我编写的Python应用程序组成。

接下来,我们将看到MongoDB如何?

MongoDB

这是一个NoSQL数据库系统。我听说它叫做No SQL,非SQL和非关系型SQL,但实际上它意味着数据是使用键/值对存储的。

MongoDB将数据存储在类似JSON的对象中,这些对象称为文档。

以下是我们上面的零售示例的示例文档。

{

"item": "toothpaste",

"cost": 4.99

},

{

"item": "soda",

"cost": 0.99

}

每行由文档表示。

行集合称为集合。

关于NoSQL数据库的一个非常酷的部分是没有设置模式。可以在同一集合中包含与相同结构不匹配的文档。

使用你喜欢的语言与MongoDB数据库交互是一件轻而易举的事,因为大多数语言都支持JSON。每个文档都从MongoDB读入,并作为JSON值存储在程序中。

这使得MongoDB入门变得非常容易。

就像Cassandra一样,MongoDB也是一个分布式存储系统。

MongoDB使用SHARD KEY在集群中的不同节点之间分发文档,该密钥非常类似于上面概述的Cassandra的PRIMARY KEY。它使用SHARD KEY来了解存储数据的节点。

MongoDB集群的性能很大程度上取决于你选择的分片键。

结论

正如你所看到的,两个系统都可以以分布式方式存储大数据,但它们的表现却截然不同。

相关推荐