0

所以我一直在研究 NoSQL 数据库,而且我有。对他们非常着迷。所以我的问题是,可能将第二个 NoSql 数据源添加到已经使用关系数据库的现有 n 层企业 Web 应用程序的一些合法用途和/或原因是什么?

我在 RavenDB 博客上读到,他们的数据库的缺点之一是报告。文档数据库通常是这种情况吗?您能否了解如何使用 SQLServer 进行报告,使用 NoSql 进行其他操作?像这样的架构会是什么样子?

4

4 回答 4

2

这取决于您的应用程序中缺少什么,我可以想到添加 no-sql 数据库的这些原因:

  • 如果您的 Web 应用程序是高流量应用程序,那么您希望记录一些用户行为数据:http ://wiki.apache.org/cassandra/LoggingToCassandra

  • 缓存或内存使用,您始终可以将 Redis、Riak、Hazelcast 等内存数据库添加到您的应用程序以提高其性能(也可以考虑 memcached)。这有助于搜索、用户会话和提供静态内容。

  • 如果你需要一个 pub/sub 服务器,Redis 做得很好http://redis.io/topics/pubsub

  • 用于以结构化方式存储数据,例如 JSON 格式或图形,如 mongoDB、OrientDB、neo4j 和 CouchDBs。您可以使用 couchDB 的内置 REST API 直接从 Web 客户端访问数据。

  • 为了在不影响现有数据库的情况下向 Web 应用程序添加新功能,例如,您希望通过 API 向公众公开数据,或者您希望添加实时搜索和索引功能。

  • 对于可伸缩性,可以说 no-sql 数据库比关系数据库的伸缩性更好。

于 2013-03-01T06:20:01.860 回答
2

这里有很多很好的例子。似乎没有提到的一件事是创建非规范化的高事务读取层。这很适合 CQRS 世界。关系模型中的数据难以查询以创建报告可消耗数据的地方。您可以改为将关系模型转换为平面模型......文档数据库做得很好。

于 2013-03-01T16:02:11.477 回答
1

缓存是一种常见的用法。例如,请参阅其他问题:

什么是适合缓存网站响应的存储 RDBMS、NoSQL?

于 2013-03-01T05:39:53.750 回答
1

缓存确实是一种常见的用法。Couchbase 和 Redis 通常满足这一点。

结构化日志存储也是一种常见用途。人们似乎喜欢使用 Mongo 来存储结构化日志(而不仅仅是一个扁平字符串)。

任何处理大量数据的东西。例如,也许您在您的网站上放置了一个跟踪像素来跟踪页面点击/查看/用户活动。生成的数据可能非常大。NoSQL 数据库通常可以很好地横向扩展。

我还认为文档数据库(CouchDB、MongoDB、Couchbase)允许您存储任何难以规范化的内容。花费所有时间制作表和 CRUD 存储过程?将丰富的对象序列化为 JSON 并存储它可能更容易!

它不是真正在 NoSQL 下,但图数据库可以有效地存储事物之间的关系。想想 Facebook 的社交图谱,甚至是推荐引擎。

于 2013-03-01T05:56:47.673 回答