使用MongoDB和SQL Server Express与Asp.net MVC一起使用

3
我正在使用Asp.Net MVC 4和C#构建一个网站,托管在VPS上。该网站具有许多分享评论/回复功能(我需要存储大量评论)。我原计划使用MongoDB,因为它是免费的,并且非常适合存储博客/评论,但是在读了这篇文章之后,我有些犹豫了。
所以现在我考虑使用MongoDb来存储评论和回复,使用带有10GB限制的SQL Server Express版本来存储用户帐户和其他用户配置文件数据。
在一个Web应用程序中使用两个不同的数据库这样做可以吗?还是有其他类似于MongoDb的稳定文档数据库可供使用,而不必使用SQL Server? RavenDb是一个选择吗? 提前致谢!

@Jonathan 那个问题是关于Rails和Ruby gems的。我认为它不适用于这里(一个关于ASP.NET MVC的问题)。那里的答案对OP没有帮助。 - ashes999
1个回答

2

是的,在一个web应用程序中使用两个不同的数据库是可以的。甚至更好的做法是这样做,因为每种类型的数据库都有其优点和缺点,并且它们永远不适合完成所有工作。你可能选择了MongoDB,因为你听说它非常适合存储大量数据和进行重负载查询。这基本上是正确的,但也有一些注意事项。另一方面,SQL Server可能会慢得多(取决于确切的工作流程),并且很容易因写入过多而过载。
首先——它确实运行良好。大多数情况下。在重负载时,它尽最大努力。但是它不像其他一些数据库那样写入效率高(由于大量使用锁定),并且如果您必须保持某些集合或文档同步,它也不是“非常安全”的——例如SQL事务,在不同表格中执行许多操作,因为Mongo除了文档级事务(对单个文档的每次更改都是原子性的)之外,没有提供任何额外的东西。
还有其他稳定的文档数据库,例如CouchDB——它更加偏向于写入,并且由于多版本并发控制,具有一些有趣的功能。


谢谢!我正在考虑将帖子/评论存储在NoSql数据库中。我需要在Sql数据库中存储一份备份副本吗?我曾经看过RavenDB,但它们不是免费的:(。现在我正在研究redis。有人在大容量场景下使用过.Net和redis吗?谢谢! - user636525
你不需要这样做,但你可以这样做。这取决于你的工作流程,如果你只是使用NoSQL数据库来缓存数据,那么这种方式就会要求你使用缓存而不是NoSQL数据库。因为你想对最终数据(如:帖子)进行一些编辑,所以我不建议在MySQL中保留备份,而是使用NoSQL数据库的备份功能。这样设计更加清晰。 - mrówa
谢谢,最后一个问题,我希望在名字查找方面使用NoSQL,你认为使用缓存是更好的选择吗?如果我有成千上万的用户,你认为那会成为一个问题吗? - user636525
或者当你说缓存时,你是指像memcache这样的东西吗? - user636525
取决于数据;)如果您想查询和编辑它们,最好在一个地方完成,而不是两个数据库。对于名称和姓氏的查找?这取决于您的需求,可能是字典数据库或全文搜索之类的东西?(根据您的确切需求)Mongo不提供全文搜索。是的,我指的是像memcached这样的东西(但不仅限于此)。 - mrówa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接