問題タブ [riak]
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.
path - riak クラスタの再起動時にフック モジュールをロードするためのソリューション
現在、riak パスにないモジュールに存在する riak 用のいくつかのフックを実装しました。
特定のバケットにフックをインストールしたいときはいつでも、最初に load_module を実行して、riak ノードがフックを呼び出せることを確認します。問題は、ノードの 1 つがダウンしてからバックアップした場合でも、フックを呼び出そうとしますが、モジュールにアクセスできないことです。
これを処理するための推奨される方法は何ですか? 私が考えた 1 つのアイデアは、ERL_LIBS を変更して、そのパスにフックが含まれるようにすることでした。これは正しいアプローチですか?
backup - 単一バケットの riak バックアップ ソリューション
1 つの riak バケットを [ストリーミングまたはスナップショットによって] ファイルにバックアップできるソリューションの推奨事項は何ですか?
algorithm - 結果整合性で使用するマークル ツリーについて説明する
マークル ツリーは、複数の分散型レプリケート キー/値ストアで反エントロピー メカニズムとして使用されます。
反エントロピー メカニズムが良いことであることは間違いありません。本番環境では、一時的な障害が発生するだけです。マークルツリーが一般的なアプローチである理由がよくわかりません。
完全なマークル ツリーをピアに送信するには、ツリーの最下位レベルに格納されている各キー値のハッシュと共に、ローカル キー空間をそのピアに送信する必要があります。
ピアから送信されたマークル ツリーを比較するには、独自のマークル ツリーが必要です。
両方のピアには、ソートされたキー/値ハッシュ スペースが既に用意されている必要があるため、不一致を検出するために線形マージを実行してみませんか?
維持費を考慮に入れると、ツリー構造が何らかの節約をもたらすとは確信していません。また、ツリーの葉を介した線形パスが、ワイヤーを介して表現をシリアル化するためだけに既に行われているという事実もあります。
これを解決するためのストローマンの代替案は、ノードにハッシュ ダイジェストの配列を交換させることです。ハッシュ ダイジェストは段階的に更新され、モジュロ リング位置によってバケット化されます。
私は何が欠けていますか?
mongodb - さまざまなNoSQLデータベースのクイックリファレンスガイド
参照され続けているNoSQLデータベースの主なプロパティ(特に、MongoDB、Riak、Redis、Memcached、Membase、Cassandra)をまとめた場所を探しています。クエリの種類、酸、スケーリングのアーキテクチャ/プロパティなど。すべてメモリ内、ディスクへのオーバーフロー、ディスク上のバックアップ、または主にメモリ内のインデックスのみ?
scala - ScalaからRiakにアクセスするにはどのライブラリを使用すればよいですか?
プロジェクトでは、ScalaとRiakの両方を使用しています(これまでに使用したことのない2つのもの;))。
Google検索はRiakkiの使用を示唆しているようです。ただし、特定のライブラリは2009年以降維持されておらず、私のシステムでもコンパイルされていないようです。GitHubには、より新しいバージョンのScalaで動作するように見える最新のフォークがあります。しかし、Riakkiは、昨年2月から廃止されたJiakに依存しているようです。
唯一の合理的な選択は、Scalaの公式RiakJavaライブラリを使用することだと思われます。それは確かに可能ですが、私は言語を学ぼうとしているので、スカラのように物事をやりたいと思っています。JavaスタイルのAPIとインターフェースをとる必要があると、楽しみが少し損なわれる可能性があります。自分でラッパーを作成するのは大変な作業のようです。
tl; dr:ScalaのRiakを使いたいです。他の人は何を使っていますか?
編集:ちょうどRyuを見つけました(それにリンクすることはできません-新しいユーザーのための質問ごとのハイパーリンクの量の厄介な制限)。しかし、それほど成熟しているようには見えません。
mongodb - アプリケーションの同期
スタンドアロンのネットワーク デバイスがあります。これらのデバイスの地理的に分散したグループの一部として機能するには、再加工する必要があります。グループ内のデバイス間の同期は、頻繁に行う必要はなく、1 時間ごとに行う必要はありません。アプリケーションは、SQLite を使用した Rails です。
主に、これらのデバイスで収集された特定の情報を同期させたいと考えています。展開のため、大規模なデータベース クラスターを追加することは現実的ではありません。
レプリケーションとレプリケーションに起因する競合の処理がその強力なスーツであるため、私はCouchDBを検討しています。
分散ネットワーク デバイスの同期を維持するメカニズムとしての CouchDB についてどう思いますか? 代替アプローチに関する考えや提案はありますか?
orm - 分散キー/値ストアの ORM に相当しますか?
バックエンドに分散キー/値ストアを使用して何かを実装する方法を評価中です。オブジェクト リレーショナル マッパーから取得するものと同様のオブジェクト モデルをサポートするキー/値の上にレイヤーを配置したいと考えています。
他の人がこれを行っている例を誰か教えてもらえますか? 私は主にデザインのアイデアを探していますが、気に入ったものに出くわしたら、自分で書く代わりにそれを使うかもしれません. おそらく、Riak の上に Perl で実装することになるでしょうが、それらの決定は最終的なものではありません。
performance - Riak パフォーマンス - 予期しない結果
ここ数日、私はリアクと少し遊んでいました。初期設定は思ったより簡単でした。これで、テストのためにすべてのノードが同じ vm で実行されている 3 ノード クラスターができました。
確かに、私の仮想マシンのハードウェア設定は大幅にダウングレードされています (1 CPU、512 MB RAM) が、それでも riak のパフォーマンスが遅いことにかなり驚いています。
マップリデュース
map reduce で少し遊んでみると、1 つのバケットに約 2000 個のオブジェクトがあり、それぞれのサイズは json として約 1k ~ 2k でした。このマップ関数を使用しました:
また、結果を返す http 要求を実行するだけで 2 秒以上かかりました。クライアント コードで json からの結果を逆シリアル化するのにかかった時間は数えません。3 つのノードのうち 2 つを削除すると、パフォーマンスがわずかに 2 秒未満に改善されたように見えますが、それでも私には非常に遅いようです。
これは予想されることですか?オブジェクトのバイトサイズはそれほど大きくなく、1 つのバケットに 2000 個のオブジェクトもそれほど大きくありません。
入れる
上記と同じサイズの約 60.000 個のオブジェクトのバッチ挿入は、かなり時間がかかり、実際にはうまくいきませんでした。
オブジェクトを riak に挿入した私のスクリプトは約 40.000 で停止し、riak ノードに接続できなくなったと言いました。riak ログで、ノードがメモリ不足で停止したことを示すエラー メッセージを見つけました。
質問
これは本当に riak での最初のショットなので、何かを台無しにした可能性は間違いなくあります。
- 微調整できる設定はありますか?
- ハードウェア設定が制限されすぎていませんか?
- riak とやり取りするために使用した PHP クライアント ライブラリが、ここでの制限要因ではないでしょうか?
- すべてのノードを同じ物理マシンで実行するのはかなりばかげていますが、これが問題である場合、どうすればriak のパフォーマンスをよりよくテストできますか?
- map reduce は本当に遅いですか? riak メーリング リストで map reduce によるパフォーマンス ヒットについて読みましたが、Map Reduce が遅い場合、ほぼリアルタイムで必要なデータの「クエリ」をどのように実行すればよいのでしょうか? riak が redis ほど速くないことはわかっています。
riak の経験が豊富な人がこれらの質問のいくつかを手伝ってくれれば、本当に助かります。
java - Bitcaskは、シンプルで高性能なファイルストアで大丈夫ですか?
何百万ものxmlファイルを保存および取得する簡単な方法を探しています。現在、すべてがファイルシステムで実行されていますが、パフォーマンスに問題があります。
要件は次のとおりです。
- バッチプロセスで数百万のxmlファイルを保存する機能。XMLファイルのサイズは最大で数メガバイトで、ほとんどが100KBの範囲です。
- IDによる非常に高速なランダムルックアップ(例:ドキュメントURL)
- JavaとPerlの両方からアクセス可能
- 最も重要なLinuxで利用可能-ディストリビューションとWindows
私はいくつかのNoSQLプラットフォーム(CouchDB、Riakなど)を調べましたが、これらのシステムは見栄えがしますが、ほとんどやり過ぎのようです。
- クラスタリングは必要ありません
- デーモン(「サービス」)は必要ありません
- 巧妙な検索機能は必要ありません
Riakを深く掘り下げてみると、Bitcask(イントロを参照)が見つかりました。これはまさに私が望んでいるもののようです。イントロで説明されている基本は本当に興味をそそられます。しかし、残念ながら、Javaを介してビットキャスクリポジトリにアクセスする手段はありません(またはありますか?)
スー私の質問は要約すると
- Bitcaskモデル(追加のみの書き込み、メモリ内のキー管理)は、何百万ものドキュメントを保存/取得する正しい方法です。
- Javaを介して利用可能なBitcaskの実行可能な代替手段はありますか?(BerkleyDBが思い浮かびます...)
- (riakスペシャリスト向け)Riakは、「裸の」Bitcaskと比較して、オーバーヘッドの実装/管理/リソースの面ではるかに優れていますか?
mongodb - Basho Riak でインプレース更新を行うことに関する質問
現在、統計の記録と広告配信に Mongodb を使用しています。私は生のインプレッションをログ コレクションに記録し、プロセスは find と modify を実行してログを取得し、upsert を使用して事前計算されたコレクションに集約します (rainbird が Twitter で動作する方法と同様です)。 http://techcrunch.com/2011/02/04/twitter-rainbird/
親、子、子の子などを集計することで、統計のクエリを高速かつ簡単に実行できます。
私は(mongoで){Item_id、Hour}で構成されるキーを使用し、それに(たくさん)アップサートします
Riak が同じ問題を解決するための強力な方法を持っているかどうか、またそれをどのように実装するかを考えていました。