我正在使用Asp.Net MVC 3和C#建立一个网站,我对Sqlserver感到很满意,但我想与MongoDB一起使用,因为我认为它可以更便宜地托管(免费?)该网站。 我的网站存储了大量的用户记录,其中包含标题和内容以及登录用户的其他一些数据。我希望能够对Content进行全文搜索。我想知道MongoDB是否适合这个要求
提前致谢!
答案 0 :(得分:3)
这取决于您的数据结构。 MongoDB是面向文档的DB。对于“普通数据结构”,它比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
答案 1 :(得分: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的在线托管。
我希望其中一些有用