最近我遇到了 Nosql 数据库概念,虽然我了解了它的方法和原因,但我没有得到正确的问题答案,它支持多大的项目规模?
它会支持通常具有大量统计用途的大型应用程序,如谷歌分析(示例)吗?他们的可靠数据或应用程序是否已经在 couchbase 等数据库上运行?
最近我遇到了 Nosql 数据库概念,虽然我了解了它的方法和原因,但我没有得到正确的问题答案,它支持多大的项目规模?
它会支持通常具有大量统计用途的大型应用程序,如谷歌分析(示例)吗?他们的可靠数据或应用程序是否已经在 couchbase 等数据库上运行?
这个问题真的太模糊了,无法有效回答。那里有数十种具有各种用例的“NoSQL”数据存储。这是 10,000 英尺外的景色。
在我看来,常用的 NoSQL 数据存储基本上有 3 大类,键/值存储、文档数据库和大数据 (hadoop)。这是一个有点人为的名称,其中许多产品可以说可以跨越多个领域。还有一些其他类别,例如图形数据库,它们更专门针对特定问题,我不打算在这里讨论它们,因为我对它们没有专业知识。
大多数 NoSQL 数据库都是简单的键/值存储,在检索命名键时速度非常快。如果您需要扫描或聚合数据集,它们的效率尤其低。k/v 存储的示例有memcached、Riak、Redis、CouchBase、 Voldemort和Amazon DynamoDB。使用HandlerSocket插件(内置于Percona Server),甚至 MySQL 也可以用作非常快速的 k/v 存储。这些 k/v 商店中的每一个都有不同的功能集,旨在解决不同的问题。它们中很少有适合作为应用程序的权威/主要数据存储,因为执行集合操作非常困难且效率低下。这些主要用作缓存层或存储不需要关系操作的非常专业的数据。
另一类 NoSQL 数据库是文档存储。示例包括MongoDB和Cassandra。这些类型的数据存储比 k/v 存储存储更多的结构化数据,并且通常具有更强大的查询语言。它们具有灵活的“模式”,可以将完全不同的数据集从一行保存到下一行。
最后,您将获得真正的“大数据”存储,其中Hadoop及其相关查询语言、pig、hive(hadoop 的 SQL 接口)和hbase(hadoop/HDFS 之上的实时数据存储)为王. 除了 hbase 之外,基于 Hadoop 的数据存储往往是为离线处理数百台机器上真正庞大的数据集而构建的。
附带说明一下,让我对“NoSQL”非常反感的是它实际上与 SQL 语言毫无关系。NoSQL 是关于重新发明数据存储层并使其更“可扩展”(另一个模糊、被误解的术语)和高度可用。在大多数情况下,查询语言是无关紧要的,并且其中一些数据存储已经产生了非常丑陋的方式来执行即使是最简单的操作。如果开发人员做出选择,SQL 可以用作大多数这些数据存储的访问语言 - 查看VoltDB、MySQL Cluster或 Hive 以获取具有“NoSQL”功能的分布式 SQL 数据库的示例。当被视为键/值存储时,
SELECT value FROM table WHERE key = ?
) 并且创建一个客户端库会相对容易,该客户端库创建一个一致的哈希方案来构建分布式 MySQL 集群,就像使用 Riak、Redis 或 memcached 一样。底线是,如果您想要比这更多的细节,则必须更明确地说明您的需求。以下只是您需要回答的一小部分问题,甚至可以限制该字段:
我希望这对您的研究有所帮助。