4

前回の訪問で並べ替えられたコミュニティのメンバーを表示する必要があります。それぞれが何百万人ものメンバーを持つことができる何百万ものコミュニティがあります。リストはスクロール可能である必要があります。最終訪問時間で並べ替えるため、注文は頻繁に更新されます。

RDBMS では、この機能は通常の B ツリー インデックスによって簡単に実行できます。しかし、NoSQLアプローチでどのようにそれを行うことができますか?

私の現在の考えは次のとおりです。

チェーン化された固定長のバケットを使用する標準の NoSQL スクロール可能リスト アプローチは、並べ替えの要件があるため、あまり役に立ちません。

Cassandraは、列名順に並べられた値を保持します。理論的には、前回の訪問時間を列キーとして使用できますが、更新ごとに既存の列を削除して新しい列を挿入する必要があり、効果的ではありません。

Apache Luceneは NoSQL ストレージではありませんが、ソートされたインデックスを作成するため、オプションでもあります。しかし、大規模な更新に対してどのように拡張できるかはわかりません。

Redis Sorted Setsは非常に有望に思えますが、私はそれを経験したことがありません。

他にどのようなオプションがありますか?

4

1 に答える 1

1

オブジェクトの最終更新日を保持すると、多くの NoSQL データベースでクエリ時にソートできます。

MongoDB (インデックスに関するドキュメントを参照):

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

エラスティック検索には、クエリでも並べ替えがあります。

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

CouchDB のような一部のストレージには、組み込みの並べ替え機能がまったくないように見えるため、投資する前に特定のソリューションを確認することには価値があります。

于 2013-04-23T21:30:44.583 に答える