使用nosql/弹性搜索设计标签系统



我必须用这种模式设计一个系统。

{
"documentId" : 123
"documentType" : "paper"
"tags" :["abc","xyz"]
//other meta data of document
}

我将做的查询将是找到k个流行标签,按标签获取文档,添加,删除,更新标签,并获得文档的所有标签。考虑到DB应该是高度可伸缩的,实现这一点的最佳策略是什么?我正在考虑三个解决方案——

  1. 在MongoDB等NoSql数据库中创建文档,并在标签数组上创建索引。所以MongoDB是我的主数据库
  2. 使用弹性搜索作为主数据库和索引完整的文档。然后轻松搜索所有查询。
  3. 使用kafka与spark/storm流解决方案
  4. 在视频中设计一个缓慢和快速的管道- https://www.youtube.com/watch?v=kx-XDoPjoHw&t=1835s(不确定spark是否仅在内部以这种方式工作)

处理这种情况的最佳方法是什么?

看情况;

  • 我们需要一个免费的文本搜索标签系统吗?
  • 什么是更新速率(每分钟更新的文档数)

恕我直言,如果Q1的答案为Yes且更新率较低,则使用ES

如果Q1的答案是No,并且Update rate很高,您可能需要考虑非elasticsearch解决方案。

如果更新率很高,并且Q1为Yes,则考虑非elasticsearch解决方案(取决于索引的大小,非常有可能使用ES,但不一定是最优的)

相关内容

  • 没有找到相关文章

最新更新