2016-06-21 6 views
0

ポジションベースのインデックスをネイティブにサポートするデータベース(SQLまたはNoSQL)を知っている人はいますか?データベース位置インデックス

多くの場合、私は、注文や位置が外部エンティティ(ユーザ、外部サービスなど)によって維持される位置ベースのコレクションを維持する必要があった。私は、コレクション内のアイテムの順序はかなり頻繁に変更されますが、レコード内のデータフィールドに基づいていないことを意味しています。コレクションは、コレクションを維持しているサービスに関しては完全に任意です。サービスは、ポジション(Pos Xの後に挿入、Pos YでDeleteなど)と位置の操作(pos Xからpos Yへの移動)によってCRUD機能を許可するインターフェイスを提供する必要があります。

私はこれを達成するための回避策があることを認識しています。私は多くを実装しましたが、これはデータをインデックス化するための非常に基本的な方法のようです。だから私は助けることができませんが、そこには、これのための棚のソリューションがなければならないと感じる。

私が見てきた唯一のことは、これが近くにあることは、RedisのListデータ型であり、位置によって並べ替えられている間は、(複数のインデックスを持つテーブルと比較して)かなり制限されており、RedisはCache永続的なデータストアよりも

最後に、10,000個のレコードを含むユーザー注文コレクションが必要な要件があるため、これを求めています。

+0

Postgresの配列は気になりますが、本当にあなたが望むCRUDを行うことはできません。あなたはそれを行う関数を書くことはできますが。整数配列の場合、これは既に拡張子として利用可能です –

+0

@a_horse_with_no_name私はpostgres配列について知らなかったので、それをおかげさまします。彼らは非常にインデックスではありませんが、有用である可能性があります、私は遊びを持っています。拡張機能は[intarray](https://www.postgresql.org/docs/9.5/static/intarray.html)でしたか? –

+0

ルックアップを高速化するために列を索引付けできません。 'intarray'は、整数配列(そして整数のみ)を扱うための追加の演算子と関数を提供します。 –

答えて

0

誰にも役立つ場合、私が今までに見つけた最良の近似は、グラフデータベース(Neo4Jなど)にリンクリスト構造を実装することです。アイテムのリンクを維持することは、位置の列を維持するよりもはるかに簡単です(特に、次のリンクのみが必要な場合、つまり重複しない場合)。穴を残したり、インデックスを再作成する必要がないので簡単です。ポインタ(またはリレーション)を移動するだけで済みます。パフォーマンスはかなり良いですが、リスト全体が最初から最後までスキャンされなければならないので、リストの最後に向かって項目にアクセスしようとすると、読み込みが直線的に遅くなります。

関連する問題