最近我遇到了Nosql数据库的概念,虽然我学会了如何和为什么这样做,但是对于这个问题,我没有得到一个正确的答案,它支持的项目规模有多大?
它会支持更大的应用程序,通常有很多统计用途,比如google分析(例如)?它们的可靠数据或应用程序是否已经在这样的数据库上运行,如couchbase等?
发布于 2012-04-29 01:56:20
这个问题实在太含糊,无法有效回答。有几十个"NoSQL“数据存储在那里,它们有不同的用例。这是一幅一万英尺的外景。
在我看来,通常使用的NoSQL数据存储主要有3类:密钥/值存储、文档数据库和大数据(hadoop)。这是一个有点人为的名称,其中许多产品可以跨越到多个领域。还有一些其他类别,如图形数据库,它们更专门处理特定的问题,我不打算在这里讨论它们,因为我对它们没有专门知识。
大多数NoSQL数据库都是简单的密钥/值存储,在检索命名密钥时非常快速。如果您需要扫描或聚合一组数据,它们的效率尤其低。k/v商店的例子有梅卡奇、里克、Redis、CouchBase、伏地魔和亚马逊DynamoDB。有了HandlerSocket插件(内置于Percona服务器中),即使是MySQL也可以作为一个非常快的k/v存储。每个k/v存储都有不同的特征集来解决不同的问题。它们中很少有适合作为应用程序的权威/主要数据存储,因为执行set操作是多么困难和效率低下。它们主要用作缓存层或存储不需要关系操作的非常专门的数据。
NoSQL数据库的另一个通用类是文档存储。例子包括MongoDB和卡桑德拉。这些类型的数据存储比k/v存储存储更多的结构化数据,并且通常具有更强大的查询语言。它们具有灵活的“模式”,使从一行到下一行保持完全不同的数据集成为可能。
最后,您将看到真正的“大数据”存储( Hadoop及其相关查询语言)、猪、蜂巢 (hadoop的一个SQL接口)和hbase (在hadoop/HDFS之上的一个实时数据存储)。除了hbase之外,基于Hadoop的数据存储通常是为在数百台机器上对真正庞大的数据集进行脱机处理而构建的。
顺便提一句,让我对"NoSQL“完全不感兴趣的是,它与SQL毫无关系。NoSQL是关于重新发明数据存储层,使其更“可伸缩”(另一个模糊、误解的术语)和高度可用。在大多数情况下,查询语言是不相关的,其中一些数据存储已经产生了非常丑陋的执行甚至最简单的操作的方式。如果开发人员做出这样的选择,可以使用SQL作为大多数这些数据存储的访问语言--看看VoltDB、MySQL集群或Hive,看看具有"NoSQL“特性的分布式NoSQL数据库的示例。当作为密钥/值存储处理时,MySQL与InnoDB实际上在主键查找(SELECT value FROM table WHERE key = ?)中非常快,而且创建一个客户端库相对容易,该库创建一致的散列方案来构建分布式MySQL集群,就像使用Riak、Redis或memcached一样。
底线是,如果你想要更多的细节,你就必须对你的需求更加明确。以下是您需要回答的问题的一小部分,以便甚至限制字段:
我希望这能对你的研究有所帮助。
https://dba.stackexchange.com/questions/17195
复制相似问题