8

我现在在网上听到了很多关于 nosql 键/值数据库的信息。你能举个例子说明一个是做什么用的。什么样的真实世界数据最适合这类数据库?

4

1 回答 1

6

我认为“你到底在用 NoSQL 做什么”对于 NoSQL 数据库的实际使用案例来说是一本极好的读物。让我在这里引用其中的一些:

  • 管理大量非事务性数据流:Apache 日志、应用程序日志、MySQL 日志、点击流等。

  • 同步在线和离线数据。这是 CouchDB 所针对的利基市场。在所有负载下的快速响应时间。

  • 当复杂连接的查询负载对于 RDBMS 来说太大时,避免重连接。

  • 低延迟至关重要的软实时系统。游戏就是一个例子。

  • 需要支持各种不同的写入、读取、查询和一致性模式的应用程序。有些系统针对 50% 读取、50% 写入、95% 写入或 95% 读取进行了优化。

  • 只读应用程序需要极快的速度和弹性、简单的查询,并且可以容忍稍微陈旧的数据。

  • 需要中等性能、读/写访问、简单查询、完全权威数据的应用程序。

  • 具有复杂查询要求的只读应用程序。

  • 负载平衡以适应数据和使用集中并帮助保持微处理器忙碌。

  • 实时插入、更新和查询。

  • 分层数据,如线程讨论和部件爆炸。

  • 动态表创建。

  • 两层应用程序,其中低延迟数据通过快速 NoSQL 接口提供,但数据本身可以由高延迟 Hadoop 应用程序或其他低优先级应用程序计算和更新。

  • 顺序数据读取。需要选择正确的底层数据存储模型。B 树可能不是顺序读取的最佳模型。

  • 将可能需要更好性能/可扩展性的部分服务切割到自己的系统上。例如,用户登录可能需要高性能,并且此功能可以使用专用服务来实现这些目标。

  • 缓存。用于网站和其他应用程序的高性能缓存层。示例是大型强子对撞机使用的数据聚合系统的缓存。

  • 表决。

  • 实时页面查看计数器。

  • 用户注册、个人资料和会话数据。

  • 文件、目录管理和内容管理系统。这些都是通过存储复杂文档的能力来促进的,它具有一个整体而不是组织为关系表。类似的逻辑适用于库存、购物车和其他结构化数据类型。

  • 归档。存储仍然可以在线访问的大量连续数据流。

  • 具有灵活模式的面向文档的数据库,可以处理模式随时间的变化。

  • 分析。使用 MapReduce、Hive 或 Pig 执行支持高写入负载的分析查询和横向扩展系统。

于 2012-08-29T02:00:13.353 回答