問題タブ [key-value-store]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
252 参照

nosql - Memcached/その他のKey-Valueエンジンの分離

バランサーの背後にたくさんのWebサーバー(フロントエンド)があります。各apacheプロセスは、すべての仮想ホストに対して独自のユーザーで実行されます。apacheが実行するコードはPHPであり、信頼できるコードではありません。(Webサーバー間で)セッションストレージを共有し、user(vhost)がそのセッションストレージにのみアクセスするように制限する必要があります。そのため、1つのテナントがmemcachedに保存されているデータをパージまたは破損できないようにします。だから私は基本的にユーザーを認証し、プライベートバケットを作成するためのソリューションを探しています。MySQLの方法が常に利用可能であることは知っていますが、SQLレイヤーによってもたらされるパフォーマンスの低下を避けたいと思います。

これまでに考えている解決策はありますか?

0 投票する
4 に答える
8623 参照

image - 中規模から大規模な値のキー値ストア

私たちは、サイズが 8KB から 500KB までさまざまで、中央値が約 15KB、平均が 30KB の (1 桁の) 何百万もの画像を格納するシステムを持っています。現在、データ セットの合計は約 100 GB です。画像のハッシュに基づいて画像にアクセスします (これは変更できますが、画像が既にデータ ストアに効率的に存在するかどうかを確認する目的で、画像から計算可能である必要があります。画像は、2 つのイメージは、バイト単位で同一である場合、ピクセル単位で同一です)。永続性は (明らかに) 重要です。

現時点では、それらすべてをディレクトリ内のファイルとして保存します — ディレクトリのリストはカーネルによってキャッシュされ、実際のファイル読み取りは必要に応じて行われます。私が理解しているように、キー値ストアの主な利点 (ファイルシステムを 1 つとして使用する場合と比較して) は、単一の値ではなく、ページ全体をキャッシュできるため、より小さな値を読み取ることです。現在、すべてのアクセスはデータと同じサーバー上の Web サーバー (イントラネット上) から行われていますが、キーがリモート マシン (主に 10GbE 経由で接続) から存在するかどうかを確認するように移行する可能性があります。

これを変更する特別な理由はありませんが、システムの他の主要部分が変更されているため、現在のアプローチを再検討する価値があるようです。

頻繁な書き込み (1:10 程度の書き込み:読み取り) に加えて、読み取りが主に (単一の) 挿入順序での読み取りであり、任意のキーへのランダムな (ただし、繰り返し行われる可能性が非常に高い) アクセスであるワークロードを考えると、可能性は高いですか?ファイルシステムからキーバリュー ストアに移行する利点はありますか?

0 投票する
1 に答える
277 参照

mongodb - SQLをKeyValueおよびMapReduceに移行する

次のような2つのテーブルを持つSQLデータベースがあります。

(非常に大きな結果セットで)結合を回避するために、これをNoSQL(つまり、MongoDb)Key-Valueストアに移動したいと思います。

  1. この構造は、そのままKVデータベースに移動するのが理にかなっていますか?そうでない場合は、ユーザーと注文に関連するUser_Ordersのような別のテーブルを追加する必要がありますか?

注文をグリッドで表示する画面がありますが、ユーザー名も表示したいと思います。SQLでは、結合を使用してデータベースからこれをプルします。

  1. 関連するユーザーを取得するためにOrder.UserIdごとに1回データベースにクエリを実行する以外に、NoSQL(結合なし)に同等のものはありますか?そうでない場合、私のアーキテクチャで複数のフロントエンドサーバーとアプリケーションサーバーを実行できると仮定して、このインスタンスでMap-Reduceを適用して同じ目標を達成するにはどうすればよいですか?

ありがとう!

0 投票する
1 に答える
776 参照

objective-c - ココアアプリのKey-Valueデータをアプリ自体に保存するにはどうすればよいですか?

ユーザーデータを含む情報辞書があります。現在、アプリと同じディレクトリにあるxmlファイルに書き込まれています。ただし、cocoaを使用すると、このxmlファイルをアプリケーションバンドルまたはアプリ内のリソースディレクトリに書き込むことができると確信しています。

誰かが私にこれを行う方法を教えてもらえますか?

0 投票する
2 に答える
681 参照

php - PHPのSplObjectStorageと甘い構文

クイックワン; それが可能かどうかは疑問ですが、オブジェクトarray($key => $value);に関してPHPの構文を利用する方法はありますか?SplObjectStorage

私が言いたいのは、達成するためのそのような方法はありますか?

オブジェクトストアを初期化するコンテキストでは?今のところ、私は単に使用しています:(そして、これが可能性であるというまったくの可能性を考慮して、おそらく継続します

それを非常に疑って、いいでしょう、しかし多分誰かがもっとよく知っています。

0 投票する
1 に答える
615 参照

database - Redis レプリケーションの問題

マスター アプリケーションによって入力される Redis マスター ノードがあります。次に、地理的に異なる場所にある可能性のあるこの Redis ノードの複数のスレーブを用意します。これらのノードは、そのノードに近いアプリによって読み取られます。

アプリ1。スレーブ1

アプリ2。スレーブ2

現在、App1 と App2 は何らかの形で関連しており、特定のデータが Slave2 ではなく Slave1 で利用できる状況は望ましくありません。

言い換えれば、同期の待ち時間は必要ありません。同時にデータを同期したい。

スレーブが更新を要求するのではなく、マスターが更新をスレーブにプッシュする可能性はありますか?

0 投票する
1 に答える
3419 参照

key-value-store - Object Storage と Key-Value データベースの違いは何ですか?

ユーザー側から見ると同じように見えます。

0 投票する
2 に答える
2350 参照

php - PHP プログラムの高速で大規模なキー値ストア

私は私のプロジェクトの全文索引システムに取り組んでいます。ページのインデックス作成プロセスの一部として、データを非常に多数の非常に小さな断片に分割します。

私はピースのサイズを一定の 20 ~ 30 バイトと同じくらい小さくしましたが、それよりも小さい可能性があります。実際のデータを構成するのは、基本的に 2 つの 8 バイト整数と float です。

私が探しているスケールとこれが作成するピースの数のために、私の目標をはるかに下回る値セットで重大な問題を示している mysql に代わるものを探しています。

私の現在の考えでは、これにはキー値ストアが最適なオプションであり、それに応じてコードを調整しました。

私はいくつか試してみましたが、何らかの理由でそれらはすべて mysql よりもスケールが小さいようです。

数億、数十億、またはそれ以上のキーと値のペアを保存しようとしているので、サイズによってパフォーマンスが大幅に低下しないものが必要です。

私は memcachedb、membase、および mongo を試しましたが、どれも簡単にセットアップできましたが、どれも私にとってそれほどうまくスケーリングしませんでした。

membase には、必要なキーの数と使用可能なメモリが限られているため、最も多くの問題がありました。これはワークロードに非常に近いため、ここでは書き込み速度が非常に重要です。一度書き込みを行い、それを数回読み返し、最終的な更新のために保存します。

削除のパフォーマンスはあまり必要ありません。最終的にはこれをマシン間でスケーリングできるようにしたいので、うまくクラスター化できるものを好みますが、今のところ単一のマシンで動作する必要があります。

また、このプロジェクトを簡単に展開できるようにしたいと考えています。そのため、セットアップが簡単な方がはるかに優れています。プロジェクトはphpで書かれているので、phpから簡単にアクセスできる必要があります。

行やその他の高レベルの抽象化は必要ありません。この場合、それらはほとんど役に立たず、キー値ストアに到達するために他のテストのいくつかからコードをすでに作成しており、それはおそらく3 番目のキーをオフにした行から取得されるものは 2 つしかないため、キー値ストアを使用するための追加作業はほとんどありません。このようにスケーリングできる使いやすいプロジェクトを知っている人はいますか?

このストアを使用して、3 つの数値の個々のセットを格納しています (サイズは、mysql での格納方法に基づいています。他の格納場所では当てはまらない場合があります)。2 つの 8 バイト整数。1 つはドキュメントの ID 用、もう 1 つは単語の ID と、その単語が文書内で占める割合の float 表現 (作品が出現した回数を文書内の単語数で割ったもの) です。このデータのインデックスは、単語 ID とドキュメント ID が含まれる範囲です。このデータを取得する必要があるたびに、特定の単語 ID のすべての結果になります。私は現在、単語ID、範囲、およびその単語/範囲コンボのカウンターをそれぞれ数値のバイナリ表現に変換し、それらを連結して2桁の数字とともにキーを形成し、保存しているそのキーの値を示します。

パフォーマンス測定は、データをストレージに出し入れするプロセスからの出力を見て、ドキュメントの処理速度を確認し、システムの動作速度のより正確な統計を追跡する統計カウンターを迅速に更新するという、やや主観的なものでした。それぞれの保存方法を使っていたときの違いを見ています。

0 投票する
2 に答える
1192 参照

java - 埋め込み可能なディスクベースのキー値ストア

単一のjarファイルを使用して配布されるプロジェクトに取り組んでいます。次のプロパティを持つキー値ストアが必要です。

  1. jar ファイルに埋め込むことができるため、追加のインストールは必要ありません。
  2. 最大数千万のペアを保持できます
  3. メモリ効率が良い。つまり、50M ペアで 100M 未満
  4. キーと値はどちらも単純な型です: long、int、small byte[]
  5. 商用利用の無料ライセンスはおまけです
  6. 同時実行、ACID、またはそのような高度なものは必要ありません。
  7. 償却されたルックアップ時間が 100 マイクロ秒未満。

BerkelyDB または JDBM2/3 以外の提案はありますか?

0 投票する
2 に答える
2123 参照

key-value - LevelDBスナップショットはデータベースのクローズ後も存続できますか?

LevelDBライブラリの「snapshot」機能が、開いているデータベースオブジェクトを閉じた後でも保存できる(したがって、その後の開いたときに再利用できる)スナップショット参照を作成できるかどうか疑問に思っています。

そうではないと思いますが、これはフォローアップにつながります。スナップショットの時点で、理想的には他のアクティビティが継続している間でも、データベースの一貫したバックアップを作成するための適切な/推奨される方法はありますか?(つまり、APIを介してスナップショットキー範囲全体を反復することはできませんか?)

(基本的に、BerkeleyDB-JEの追加専用のJDBログファイルを特定のチェックポイントの場所まで保存するのに似たものを探しています。)