問題タブ [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.
mysql - その仕事に適したデータベースはどれですか?
私は機能に取り組んでおり、この問題を解決するためにどのデータベースを使用すべきかについての意見を使用することができます。
MySQLを使用したRailsアプリケーションがあります。MySQLに問題はなく、正常に動作します。ただし、新機能については、MySQLを使用するかどうかを決定しています。問題を単純化するために、モデルがあるUser
と仮定しましょう。Message
ユーザーはメッセージを作成できます。メッセージは、投稿者との関連付けに基づいて他のユーザーに配信されます。
明らかに友情に基づく関連付けがありますが、ユーザーのプロファイルに基づく関連付けはもっとたくさんあります。ポスターに関するメタデータをメッセージと一緒に保存する予定です。これにより、メッセージをクエリするたびにメタデータを取得する必要がなくなります。
したがって、メッセージは次のようになります。
メッセージをクエリするときは、0個以上のメタデータ属性に基づいてクエリできる必要があります。この呼び出しは高速である必要があり、非常に頻繁に発生します。
メタデータ属性の数とクエリに含めることができる数が多いため、ここでSQLインデックスを作成することはお勧めできません。
個人的には、MySQLとMongoDBの経験があります。Cassandra、HBase、Riak、CouchDBの研究を始めました。どのデータベースが私のタスクに適しているかについて調査を行った可能性のある人々の助けを借りることができます。
そして、はい、メッセージテーブルは簡単に数百万または行に成長する可能性があります。
riak - Riak 検索 - 最初の 10000 件に限定された結果
Riak Search ノードを実行しており、いくつかのテスト クエリを試してパフォーマンスの感触をつかんでいます。
検索シェルを介してクエリを実行していますが、結果が最初の 10000 件に制限されています。すべての結果を取得したいのですが、この 10000 件の制限がどこから来ているのかわかりませんか?
memory - MongoDB、Riak、および HyperTable (または HBase) のメモリ要件/使用率
私はほとんどの NoSQL ソリューションを評価しましたが、MongoDB、Riak、HyperTable (または HBase) を組み合わせて使用するのが最善の方法のようです。
これらのデータベースが快適に動作するための最小要件は何ですか?
たとえば、これらのデータベース (MongoDB、Riak、HyperTable、または HBase)、Web サーバー (nginx、Cherokee など)、および Java/GlassFish をすべて 32 GB の RAM で FreeBSD を実行している単一のマシンに展開するとします。彼らは実行しますか?このアプローチを採用すると、32 GB の RAM 全体がすべてのアプリケーションで均等に共有されることに注意してください。Java/GlassFish と HBase の場合、「-Xmx0000m」オプションを使用して上限を設定することは可能ですが、これらのデータベースでは自動的にメモリ全体を使用しますか? MongoDB がメモリ マップされていることなどを理解しています。(起動パラメーターを介して MongoDB、Riak、HyperTable のメモリ使用量を制限することは可能だと思いますが、どうすればよいでしょうか?)
あるいは、MongoDB、Riak、HyperTable/HBase の各ゾーンに 4 GB を割り当てるなど、Solaris Containers (または「ゾーン」) 仮想化を使用して Solaris (または OpenIndiana) にデプロイして各アプリケーションを制限する方が良い方法ですか? このアプローチでは、すべてのデータベースは基本的にわずか 4 GB の環境で実行されていますか? では、それらが適切に動作するためには、快適な RAM の最小値はどれくらいでしょうか?
database - Riakとのリンクウォーキング-「一般的な友達」を検索
Riakに精通している人は、リンクウォークを実行して2人の共通の友達を見つける方法を説明できますか(たとえば、Facebookの共通の友達のように)?また、計算要件は理想的には最小限である必要があります。サーバーは、計算を行うために長い時間を費やす必要はありません。
私はすべての「人」を「人」バケットに入れることを考えています。各「人」には友達リンクがあり(これは1対多の関係のようなものです)、「人」ごとに逆の関係になります-他の人にリンクされています(これは1対1の関係のようなものです)。これを効率的に行うことは可能であり、計算/結果はすぐに利用できるようになると思いますが、それを理解することはできません。
(申し分なく、私はRiakで実際のコーディングを開始していません。そのため、Riakのリンクウォーキング機能についてさらに詳しく説明していただければ幸いです。)
ありがとう!
python - 単純な map-reduce を使用して、バケットとbucket.get_keys() 内のすべてのキーを一覧表示しますか?
Riak のドキュメント (Python バインディングを使用) によると、get_keys()は非常に高価であり、本番環境には適していません。私の質問は、非常に単純なマップ クエリが適しているかどうかです。たとえば、次の関数でのみ map ステージを使用します。
これは get_keys() よりも優れたパフォーマンスを発揮しますか? なぜ Riak は現在のバージョンの get_keys() ではなく、この実装を同梱しないのでしょうか? バケットのキーをリストするより良い方法はありますか?
sql-order-by - データを並べ替える/並べ替える方法は?
MongoDB、CouchDB、Redis、Tokyo Cabinet、その他の NoSQL データベースの経験はすでにあります。最近、私は Riak に出くわしましたが、とても興味深いようです。それを始めるために、NoSQL World の「Hello World」という小さな Twitter クローンを作成することにしました。完全に機能するクローンを取得するには、ツイートを時系列に並べる必要があります。Riak のドキュメントを読んだ後、Map-Reduce がこの仕事に適したツールであることがわかりました。私の開発環境では非常にうまく機能しますが、何百もの並列クエリがある本番環境でのパフォーマンスはどうですか? データをソートするための他の、おそらくより高速な方法はありますか、またはデータを順序付けられた形式 (Cassandra など) で保存することは可能ですか?
この問題に対する別の解決策を見つけたと思います - 単純なリンクリストです。したがって、考えられる実装の 1 つは、すべてのユーザーが独自の「タイムライン バケット」を取得し、そこにツイート データ自体へのリンクが保存されることです (ツイートは「ツイート」バケットに個別に保存されます)。ご存じのとおり、このタイムライン バケットには、最新のタイムライン オブジェクトにリンクし、リストの開始点となる「first」という名前のキーが含まれている必要があります。タイムラインに新しいツイートを挿入するには、タイムライン バケットに新しいアイテムを挿入し、この新しいアイテムの「次へ」リンクを「最初の」アイテムに設定し、その後、新しいアイテムを「最初」にします。
つまり、リンクされたリストで行うようにアイテムを挿入します...
Twitter と同様に、個人のタイムラインには、ユーザーに表示される 20 個のツイートが保持されます。最新の 20 件のツイートを受け取るために必要なクエリは 2 つだけです。処理を高速化するために、最初のクエリは Riak のリンク ウォーキング機能を使用して、「next」でタグ付けされた最新の 20 個のオブジェクトを取得します。最後に、2 番目の最後のクエリは、最初のクエリによって計算されたキーを使用して、ツイート自体を受信します (map/reduce を使用)。
フォローを外したばかりのユーザーのツイートを削除するには、Riak 1.0 のセカンダリ インデックス機能を使用して、関連するタイムライン オブジェクト/ツイートを受け取ります。
mongodb - ドキュメントベースの nosql (mongodb、couchdb、riak など) を使用したリレーショナル データのクエリのパフォーマンス
nosql を使用したリレーショナル データのモデリングに関する私の質問をフォローアップするために、この件に関するいくつかの記事を読みました。
彼らは、nosql が正規化されたリレーショナル データを処理できることを示唆しているようです。
それでは、以前の例を続けましょう。記事と著者の 2 種類のデータを持つ CMS システムです。記事には (ID による) 著者への参照があります。
以下は、システムがサポートする必要がある操作です。
- 著者とともに id で記事を取得する
- 特定の著者によるすべての記事を取得する
- 著者を作成日順にソートして、最初の 10 件の記事を検索します
同じデータが RDBMS に格納されている場合の同じ操作と比較して、これらの操作のパフォーマンスを理解したいと思います。 特に、操作で MapReduce を使用するか、nosql ストア (リンク) への複数回のトリップが必要か、または事前に参加するかを指定してください。
mongodb、couchdb、riak などのドキュメント ベースのnosql ソリューションに限定して説明したいと思います。
編集1:
Spring-data プロジェクトは Riak と Mongodb で利用可能です
ruby-on-rails - Deviseでリップル
Iamデータベースとしてriakを使用してdeviseを使用して認証を作成しようとしています。同じhttps://github.com/frank06/devise-rippleのORM戦略を見つけましたが、データベースに既に存在する電子メールに登録しようとすると機能しない部分を除いて、すべて正常に機能します代わりにエラーメッセージを提供して、現在のデータを上書きして更新します。私が考えた問題は、リップルが.save()をアクティブレコードとは異なる方法で処理することです。つまり、アクティブレコードがスローされ、エラーリップルがそれを上書きする場合です。
mongodb - riak検索mongodbインデックスの違い
そこで、Riakは少し前にRiak Searchを立ち上げ、最近コアに導入しました。それをいじくり回す機会はありませんでしたが、mongodb、それが提供するインデックス作成およびクエリ機能と比較して、人々がそれをどのように理解しているかに興味がありましたか?
一貫性、可用性、その他についての議論はさておき、私はriak検索とmongodbクエリとインデックス作成の長所と短所を見ているだけです。それらのそれぞれは、他のすべてのものが同じであると互換性がありますか?
mapreduce - 複数のマップ関数を持つ riak mapred クエリの実行方法
Map2 関数が Map1 関数の結果を入力として受け取るように、2 つのマップ フェーズを含む mapreduce クエリを erlang で実行したいと考えています。可能であれば、各マップフェーズの戻り値は何でなければなりませんか
- 詳細については:
2 つの単純な map 関数を使用して mapred クエリのテストを実行しました。それぞれが入力オブジェクトを (リストで) 返します。しかし、クエリを実行すると、不適切な一致エラーが発生します
私はriak_search-0.14.2を使用しています
Erlang R14B03 (erts-5.8.4)
ありがとう!