2012-03-30 67 views
0

我开始设计一个网站,它有一些我从未真正处理过的要求。具体而言,数据对象将具有相似但不准确的属性。是的,我大概可以找出大多数可能的属性,然后不填充那些没有意义的属性,因此保留传统的“关系”表和列设计,但我认为这可能是一个很好的学习NoSQL的时间。NoSQL或SQL Server

此外,用户将有1,并且只有1个文本框进行搜索,并且我将需要搜索所有数据对象及其属性以查找该字符串。

理想情况下,我想按照“重要性”的顺序返回搜索结果,这意味着如果在“名称”属性中找到用户输入字符串的匹配项,它将作为更高置信度匹配返回比如果字符串在子属性上匹配。

任何人都有这种情况的经验吗?你有什么尝试过,或没有工作?我错在认为这个项目非常适合NoSQL类型的数据库吗?

+0

如果您需要“实体”和/或事务一致性之间的关系(如果一致性比可用性更重要),那么使用传统的SQL Server。如果您的数据在形状上更“不可预知”,并且(接近)100%可用性比关系一致性更重要 - 那么您可以查看NoSQL及其文档存储模型。 – 2012-03-30 05:37:16

回答

2

坚持使用传统的关系型数据库,如MySQL或Postgresql。我会建议您在获得匹配结果后按照您的应用代码中的相关性进行排序。结果集的大小应该会影响您的设计选择,但是如果您的结果少于1-2k,那么请保持简单并且不要过多地考虑优化。

NoSQL只是一个哑键值存储区,是一个可以跨多个应用程序实例共享的持久字典。它可以解决可伸缩性问题,但会引入新的问题,因为您现在只有一个哑数据存储。关系数据库已经进行了多年的性能调优并且做得很好。

我发现NoSQL更适合存储状态数据,如用户首选项或缓存。如果你正在分析数据之间的关系,那么你需要一个关系数据库。