我一直在为我的项目的下一阶段研究以下NoSQL数据库:
elasticsearch 将自己定位为主要服务于高级搜索场景,而 RavenDB 将自己定位为面向文档的数据库。
首先,该文档将围绕视频。每个人都有一个自然的身份。这将是文件的关键。
围绕这一点,我在不一定是标量或平面的字段中添加其他内容,因为信息将来自具有不同结构的许多不同来源。
例如,将有来自视频提供商的 Atom 提要的内容、嵌入了视频的博客文章,以及来自数据仓库项目的其他数据片段。
所有项目都没有固定的结构(实际上,每个项目都非常特定于领域),唯一与它们相关的是上面提到的视频的自然键。
也就是说,一旦我在上述解决方案之一中获得了这些信息,我就会想用它做一些事情:
- 剔除它以帮助填充随机森林中的变量,以便对视频进行分类
- 通过基于 Web 的前端(如果您必须知道,ASP.NET MVC)提供对视频的一般搜索(一般自由文本,不基于随机森林的结果)
有一些要求:
我很可能会在 ASP.NET 共享网络托管环境中。这意味着我将拥有一台机器,并且无权设置服务。可嵌入的东西会非常有帮助。
ASP.NET 环境将托管在 IIS 中,因此可嵌入方面必须在应用程序域回收中继续存在。
我想根据统计分析的结果创建新的索引,这将有助于在网站上进行搜索。
支持自动完成功能(我知道这不是“开箱即用”的请求,但能够达到这一点很重要)。
丰富的同义词支持(我正在索引内容的视频类型中有很多同义词)
我也对诸如Truffler 之类的服务持开放态度,尽管我确实担心成本(在 Truffler 的情况下,有点担心数据中心之间的延迟,因为请求将来自西海岸的网络主机,或来自东海岸的后端流程)。
此外,我不认为一种解决方案需要满足所有要求。我很乐意让一个服务于一个目的而让另一个服务于另一个目的。诚然,迁移很糟糕,但是在这两个文档存储之间迁移要容易一些(而且我不希望它们必然使用相同的文档结构)。