1

我正在使用 Asp.Net MVC 3 和 C# 构建一个网站,我对 Sqlserver 非常满意,但考虑使用 MongoDB,因为我认为托管(免费?)该网站对我来说会更便宜。我的网站存储了大量带有标题和内容的用户记录以及登录用户的一些其他数据。我希望对内容进行全文搜索。我想知道 MongoDB 是否适合这个要求.

提前致谢 !

4

2 回答 2

3

这取决于您的数据结构。MongoDB 是一个面向文档的数据库。对于“普通数据结构”,它比 MS Sql Server 更快。但它仍然存在“加入”功能的大问题。

如果你想为 .NET 项目尝试好的 No-SQL 数据库,RavenDB 也是一个不错的选择 - http://ravendb.net/它和 Mongo 一样快,而且文档数据库没有太多问题(例如,它有很好的方法来处理连接)。但!它不是免费的:)

如果你需要实现全文搜索,Solr http://lucene.apache.org/solr/是非常有趣和有用的工具。我们在 Solr.NET 库的几个项目中使用了它http://code.google.com/p/solrnet/好的入门教程在这里 - http://crazorsharp.blogspot.co.nz/2010/01/full-text -search-using-solr-lucene-and.html

于 2012-05-25T01:58:02.287 回答
2

根据我使用 MongoDB 的经验,有一些事情需要考虑。

MongoDB 是一个基于文档的数据库,使用 10gen 的标准驱动程序,您可以直接序列化 POCO 类或将数据存储为无类型文档。

这确实带来了很大的灵活性,因为您可以存储有关用户存储的完整记录并检索它,而无需像使用 SQL Server 那样规范化数据。

话虽如此,与 SQL Server 相比,MongoDB 的全文功能非常有限,有关如何在 Mongo 中进行基本全文搜索的详细信息,请参阅下面的链接。

http://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo

MongoDB 在检索数据时真正发挥了自己的作用,因为它试图将数据库存储在内存中,这使得从中获取数据非常快。

10gen 还在驱动程序中直接实现了 Linq 支持,这使得在开始时查询 Mongo 变得更加容易。您也可以使用 FluentMongo (https://github.com/craiggwilson/fluent-mongo),它位于 10gen 驱动程序之上,在 Linq 支持方面稍微先进一些。

我对 MongoDB 的体验非常积极,并打算在未来将其用于其他客户项目。

对于托管,我想您至少需要控制台访问权限,以便您可以启动数据库服务并管理任何备份。如果失败,您可以尝试https://mongohq.com/home之类的东西,它似乎提供了 mongo db 的在线托管。

我希望其中一些有用

于 2012-05-25T01:24:47.817 回答