問題タブ [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.
.net - .Netフレンドリー、ローカル、キーと値のペア、複製可能なデータストア
非常に具体的な要件を持つキー/値タイプのデータストアを探しています。誰かがうまくいくものを知っていますか?
- ある種のコンポーネントである必要があります。追加のインストールは必要ありません。
- データストアはローカルハードドライブ上にある必要があります。
- Windows XPから7を実行しているデスクトップアプリにVB.Netを使用しているので、その環境で呼び出す必要があります。
- 複製可能である必要があります。ネットワーク上でアプリのコピーを4つ実行している場合、データストアの各ローカルコピーを他のコピーと複製する必要があります。可能な限りリアルタイムに近い。
最初の3つは簡単です。これは、ADO.Netを使用してすぐに実行できます。最後のレプリケーションは、私が答えを持っていないものです。
そのような動物は存在しますか?
sql - MySQL をキー/値データベースとして使用するスケーラビリティ
MySQL をキー値データベースとして使用する場合と、Redis/MongoDB/CouchDB を使用する場合のパフォーマンスへの影響を知りたいです。私は過去に Redis と CouchDB の両方を使用したことがあるので、それらのユースケースに精通しており、キーと値のペアを NoSQL と MySQL で保存する方が良いことを知っています。
しかし、ここに状況があります:
- 私たちのアプリケーションの大部分には、すでに多くの MySQL テーブルがあります
- Heroku ですべてをホストしています (MongoDB と MySQL しかなく、基本的にアプリごとに 1 db タイプです)。
- この場合、複数の異なるデータベースを使用したくありません。
基本的に、MySQL でキー/値テーブルを持つことのスケーラビリティに関する情報を探しています。おそらく、3つの異なる任意の層で:
- 1 日あたり 1000 回の書き込み
- 1 時間あたり 1000 回の書き込み
- 毎秒 1000 回の書き込み
- 1 時間あたり 1000 回の読み取り
- 1 秒あたり 1000 回の読み取り
実際の例は、MixPanel の Real-time Web Analytics Tracker のようなものを構築する場合です。これは、トラフィックに応じて非常に頻繁に記述する必要があります。
Wordpress やその他の一般的なソフトウェアは常にこれを使用しています。Post にはキーと値だけの「メタ」モデルがあるため、検索可能なオブジェクトに任意のプロパティを追加できます。
もう 1 つのオプションは、シリアル化可能なハッシュを BLOB に格納することですが、それはより悪いようです。
あなたの見解は何ですか?
c++ - C++用の使いやすい埋め込みKey-Valueストアを探しています
大量のデータ(使用可能なRAMよりも多い)を常にシーケンシャルに読み書きするC++アプリケーションを作成する必要があります。
データを将来の証拠として保持し、文書化するのを容易にするために、私はProtocolBufferを使用します。ただし、プロトコルバッファは大量のデータを処理しません。
以前のソリューションは、データユニットごとに1つのファイルを作成する(そしてそれらをすべて1つのディレクトリに保存する)ことでしたが、これは特にスケーラブルではないようです。
今回は組み込みデータベースを使ってみたいと思います。同様の機能を使用するには、キー->値の関連付けを保存するだけで済みます(したがって、sqliteはやり過ぎのようです)。値は、ProtocolBufferから出力されるバイナリシリアル化になります。
データベースが「メモリに保持するもの、ディスクaspに移動するもの」の問題、「大量のデータをディスクに効率的に保存する方法」の問題を管理し、理想的には、シーケンシャル読み取りパターンを最適化することを期待しています(読み取りによって事前に次のエントリ)。
代替案を探している私は代替案がないことに驚いた。この分離は必要ないため、データベースを別のプロセスに保持したくありません(これによりredisが除外されます)。
私が見つけた唯一のオプションはBerkeleyDBでしたが、不快な低レベルのCapiがあります。次に、私が見つけた最良のオプションは、BerkeleyDBの上にあるstldb4でした。APIは非常に優れているようで、私のニーズに合っています。
でも心配です。stldb4は奇妙に見え(libferrisのものに依存している)、保守されていない解決策(1年前の最後のリリース)であり、私がかなり一般的であると思われる問題についてです。
この問題を管理する方法について、より良い提案がありますか?
回答ありがとうございます。
ruby - このキーと値のペアを解析するにはどうすればよいですか?
これは実行からの出力ですputs get_account_entry.inspect
たとえば、:name => "id"の値を抽出するにはどうすればよいですか?もともとはハッシュのようなものだと思っていたので、get_account_entry [id]で結果が出ますが、詳しく調べてみると意味がありません。
しかし、どうすれば値を取得できますか?
チャックは私を正しい道に導いたが、それでも助けが必要である:
これは、rubyコンソールの出力です。
python - 適切なツイスト API (ノンブロッキング) を持つキー値ストアはどれですか?
ネットワークで実行するには、信頼できる KV ストレージが必要です。主な要件:
- ネットワーク接続
- ノンブロッキングのねじれた API を持っています
- 信頼性が高く、生産準備が整っていること。データ損失なし
- 読み取り性能よりも書き込み性能が重要
- 分散操作とフェイルオーバーのサポートは素晴らしいでしょう (そのため、ノードのリストを指定するだけです)
- java/ruby/erlang API も大歓迎です
キー (PK) の自動インクリメントがあるための追加のボーナスなので、SQL (MySQl? Postgres?) も考慮されます。ねじれたドライバーはありますか?
redis - Redisキー内のコロンの目的は何ですか
私のプロジェクトでRedisを使用する方法を学んでいます。私が頭を悩ませていないことの1つは、キーの名前にコロンが正確に使用されていることです。
私はこれらのようなキーの名前を見てきました:
コロンはキーをカテゴリに分け、キーの検索を高速化しますか?その場合、キーに名前を付けるときに複数のコロンを使用して、キーをサブカテゴリに分類できますか?最後に、Redisサーバー内でさまざまなデータベースを定義することと関係がありますか?
私はドキュメントを読み、この問題について多くのGoogle検索を行いましたが、奇妙なことに、これについて議論しているものは何も見つかりません。
.net - Windows で実行でき、.Net クライアントを持つ分散型キー/バリュー ストア?
タイトルが示すように、Windows で実行でき、.Net クライアントを持つ分散型キー/バリュー ストアを知っている人はいますか?
ありがとうございました
更新: 申し訳ありませんが、永続化する必要があることを追加するのを忘れていました。
scalability - 既存のキー値ストレージを分割する方法は?
サーバー A に 3Gb のキー値ストレージがあるとします。別のサーバー (サーバー B) が必要だと感じ始めています。したがって、サーバー A のデータをシャード (サーバー A、サーバー B) で分離する必要がありますが、現在、サーバー A のすべてのキーはそのまま (たとえば、comment_ids:user_id:10
) として表されています。
質問 #1: 現在のキー名をハッシュし、すべてのデータをシャードに分離するためのベスト プラクティスは何ですか?
質問 2: シャードの行にサーバーを追加するベスト プラクティスは何ですか?
PS: 私の英語で申し訳ありませんが、私の答えがあなたにとって明確であることを願っています.
ありがとうございました。
PS: この質問にredis
タグを付けましたが、実際には redis に関するものではなく、すべてのキー値ストレージに関するものです。
mongodb - 自分に適した NoSQL データベースを評価するスマートな方法は?
最近では無数の NoSQL データベースが利用できるようです。
- CouchDB
- モンゴDB
- カサンドラ
- Hadoop
これらのツールと、memcached の代替として機能する Redis などのツールの間にも境界があります。
手を振ったり、あまりにも多くの流行語を投げたりすることなく、私の質問は次のとおりです。
どのツールが自分のプロジェクトに最も適しているかを賢く判断するにはどうすればよいでしょうか? プロジェクトは、これに対する答えが主観的である場合と十分に類似していますか? たとえば、Ruby は Python よりも優れているか、Python は Ruby よりも優れていますか? それとも、それぞれが異なる問題を解決するという点で、ここではリンゴとオレンジについて話しているのでしょうか?
この新しいトレンドについて自分自身を教育する最善の方法は何ですか?
sql - シリアル化されたハッシュとキー/値データベース オブジェクトを ActiveRecord に格納することの長所と短所は?
それぞれが基本的に を持つ複数のオブジェクトがある場合Profile
、ランダムな属性を格納するために使用しているもの、長所と短所は何ですか:
- シリアル化されたハッシュをレコードの列に格納することと、
belong_to
メインオブジェクトである一連のキー/値オブジェクトを保存します。
コード
次のような STI レコードがあるとします。
各has_one :profile
オプション 1. シリアル化されたハッシュ
オプション 2. キー/値ストア
あなたならどちらを選びますか?
99% の確率で custom で検索する必要はないと仮定しますsettings
。パフォーマンスと将来の問題の可能性に関して、どのようなトレードオフがあるのか 疑問に思っています. カスタムの数はsettings
、10 ~ 50 の範囲である可能性があります。
ActiveRecord のオブジェクト指向の規則に従っているため、設定テーブルを使用する 2 番目のオプションを使用したいと思います。しかし、このような状況では、パフォーマンス コストが高すぎるのではないかと考えています。
注: RDBMS に関してのみ疑問に思っています。これは、MongoDB/Redis/CouchDB などに最適です。しかし、私は純粋にSQLの長所と短所を知りたい.