加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

nosql – 如何实现经常更新的持久排序列表,您需要维护订单

发布时间:2020-12-13 13:27:59 所属栏目:百科 来源:网络整理
导读:我需要显示按上次访问排序的社区成员.有数百万个社区,每个社区都有数百万成员.该列表应该是可滚动的.由于按上次访问时间排序,订单会经常更新. 在RDBMS中,这个功能可以简单地通过普通的B树索引来完成.但是我怎么能用NoSQL方法呢? 我目前的想法是: 使用链接
我需要显示按上次访问排序的社区成员.有数百万个社区,每个社区都有数百万成员.该列表应该是可滚动的.由于按上次访问时间排序,订单会经常更新.

在RDBMS中,这个功能可以简单地通过普通的B树索引来完成.但是我怎么能用NoSQL方法呢?

我目前的想法是:

使用链接的固定长度的桶的Standart NoSQL可滚动列表方法由于重新排序的要求而没有多大帮助.

Cassandra保持按列名排序的值.因此理论上我可以使用上次访问时间作为列键,但是对于每次更新,我需要删除现有列并插入一个听起来不太有效的新列.

Apache Lucene不是NoSQL存储,但也是一个选项,因为它创建了排序索引.但我不确定它是如何扩展大规模更新的.

Redis Sorted Sets听起来很有希望,但我没有经验.

我还有其他选择吗?

解决方法

如果你在对象中保留最后一个修改日期,你可以在许多NoSQL db中查询时排序:

MongoDB(见docs on indexes):

db.collection.find({ ... spec ... }).sort({ key: 1 })
db.collection.ensureIndex( { "username" : 1,"timestamp" : -1 } )

Elastic search has sorting in queries也是:

{
  "sort" : [
      { "date" : {"order" : "asc"} }
  ],"query" : {
      ...
  }
}

像CouchDB这样的一些存储似乎完全没有内置的排序功能,因此在投资之前先看一下特定的解决方案是值得的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读