2012-11-13 59 views
2

我正在用Asp.Net MVC 4和C#构建一个网站,托管在VPS中。该网站有很多共享评论/回复功能(我需要存储很多评论)。我打算使用MongoDB作为它的免费版本,也非常适合存储博客/评论,但有一点犹豫after I read this article使用MongoDB和SQL Server Express与Asp.net MVC

因此,现在我正在考虑使用MongoDb来存储注释和回复,以及SQL Server Express版本的10GB限制,用于存储用户帐户和其他用户配置文件数据。

在一个web应用程序中使用2个不同的数据库就好吗?或者是否有任何其他稳定的文档数据库与MongoDb类似,我可以使用并且不必使用SQL Server? RavenDb是一个选项吗? 在此先感谢!

+0

@Jonathan这个问题是关于Rails和Ruby的宝石。我不认为它适用于这里(关于ASP.NET MVC的问题)。那里的答案不会帮助OP。 – ashes999

回答

2

是的,在一个Web应用程序中使用两个不同的数据库是可以的。甚至更多 - 这样做非常好,因为每种类型的数据库都有它的缺点和优点,并且它们不适合做任何工作。您可能选择了MongoDB,因为您已经听说它对存储大量数据和繁重的查询非常有用。这基本上是真实的,但有一些警告。另一方面,SQL Server可能会慢得多(取决于确切的工作流程),并且可能会因重写而轻松过载。首先 - 它确实运作良好。大多。它在重负载时尽可能地努力。但是,与其他一些平行写入(因为大量使用锁定)相比,写入效率并不高,而且如果您必须保持某些集合或文档同步,则它不是“非常安全”的。 SQL事务,它在不同的表中做了很多事情,因为mongo不会给你任何比文档级事务更多的东西(每个文档的更改都是原子的)。
还有其他稳定的文档数据库,例如看看CouchDB--它更多的是面向写入的,并且由于多版本并发控制而具有一些有趣的可能性。

+0

谢谢!我正在考虑在NoSql数据库上存储帖子/评论。我还需要在Sql数据库中存储副本,以备份?我正在看RavenDB,但他们不是免费的:(我现在正在查看redis。有没有人在使用redis时遇到过大量使用redis的问题?谢谢! – user636525

+0

你不需要 - 你可以。只是依赖于你的工作流程,但是 - 这样你就可以使用NoSQL DB进行缓存,这需要使用缓存而不是NoSQL DB。因为你想对最终数据做一些编辑(比如posts),所以我会不建议在MySQL中保留备份,而是使用NoSQL DB备份工具,然后设计得更干净。 –

+0

谢谢,最后一件事,我希望使用nosql作为姓和名查找,您认为使用缓存是一个更好的主意?我想知道我是否有成千上万的用户,你认为这会是一个问题吗? – user636525