問題タブ [cassandra]
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.
nosql - HBaseおよび/またはCassandraを使用した検索(および一般的なクエリ)(ベストプラクティス?)
かなりの数のフィールド(必要に応じてプロパティ)を含むUserモデルオブジェクトがあります。「名」、「姓」、「都市」、「生年月日」と言います。各ユーザーは「一意のID」も取得します。
それらで検索できるようにしたいと思います。どうすればそれを適切に行うことができますか?どのようにそれを行うのですか?
私の理解(ほとんどすべてのKey-Valueストレージで機能します-最初にKey、次にValueになります)
u:123456789 = serialized_json_object
(ユーザーのキーの単純なプレフィックスとしての「u」、123456789は「一意のID」です)。
ここで、名と姓で検索できるようにしたいと考えて、次の場所に保存できます。
f:スティーブ= u:384734807、u:2398248764、u:23276263 f:アレックス= u:12324355、u:121324334
したがって、キーは「f」です。これは名のプレフィックスであり、「Steve」は実際の名です。「u:Steve」の場合、「Steve」であるすべてのユーザーIDを値として保存します。
これにより、すべての検索が非常に簡単になります。いくつかのフィールド(プロパティ)によるクエリ-たとえば、名(つまり「Steve」)と姓(つまり「l:Anything」)によるクエリはまだ簡単です-最初に「f:Steve」からユーザーIDのリストを取得し、次に「l」からリストを取得します:Anything "、交差するユーザーIDを見つけてください。
問題(そしてかなりの数があります):
ユーザーの保存、更新、削除は面倒です。それはアトミックで一貫した操作でなければなりません。また、値のサイズが特定の値に制限されている場合、(潜在的な)問題が発生します。そして、ここでの答えは本当にありません。ユーザーIDのリストを圧縮するだけですか?でも、あまりクールではありません。
検索する新しいフィールドを追加するID。最終的。「都市」で言います。「c:LosAngeles」= ...、「c:Chicago」= ...と同じように実行できますが、最初からこれらすべての「検索の選択肢」を予測していなかった場合は、次のようになります。夜の仕事など、既存のすべてのユーザーレコードを作成して、それらの「c:CITY」を更新できるようにするために...非常に大きな仕事です。
ロックに関する問題。ユーザー「u:123」は自分の名前「Alex」を更新し、ユーザー「u:456」は自分の名前「Alex」を更新します。どちらも「f:Alex」をIDで更新する必要があります。つまり、上書きの問題が発生するか、1つの更新が別の更新を待機します(そして、それらが多数ある場合はイメージングしますか?!)。
それを行うための最良の方法は何ですか?多くの分野で検索したいということを念頭に置いて?
PSお願いします、質問はHBase / Cassandra / NoSQL/Key-Valueストレージについてです。お願いします-MySQLを使用してSELECTについて「読む」ためのアドバイスはありません。「後で」スケーリングの問題について心配します。私が私の質問を私がしたのとまったく同じようにしたのには理由があります。:-)
database - Cassandra を使用しない場合
最近、 Cassandraに関する話題が多くあります。
Twitter、Digg、Facebook などはすべてそれを使用します。
次のような場合に意味があります。
- カサンドラを使用し、
- Cassandra を使用しない、および
- Cassandra の代わりに RDMS を使用します。
java - CassandraのJava Longをbyte []に変換する方法は?
怠惰なプログラマの警告。:)
Cassandra は、列の値をバイトとして格納します ( Java の例)。LongType コンパレータを指定すると、それらのバイトが long として比較されます。long の値を Cassandra 対応の byte[] に入れたいです。どのように?しばらくぶらぶらしました。私はあなたが私をより速く助けることができると思います。
編集:
Alexander と Eli の両方の回答は、この逆変換に同意しました。ありがとう!
python - Pylons Web アプリケーションの一意のユーザー ID
UUIDを使用して Python で一意のユーザー ID を作成する最良の方法は何ですか?
cassandra - Cassandra: LongType の使用
「CompareWith」属性「LongType」を使用して、ColumnFamily にデータを挿入しようとしています。ただし、数値キーの下にデータを挿入しようとすると、thrift エラーが発生します。
cassandra-cli プログラムで同じ操作を試みると、「A long は正確に 8 バイトです」というエラーが表示されます。どうすればこれを解決できますか? 別の比較タイプを使用する必要がありますか?
ありがとう
c# - Cassandra .5 から .6 への C# コードの移行
Cassandra db へのクイック書き込みを形成し、ループバックして現在のすべてのエントリを読み取ることを目的とした例から派生したいくつかの単純なコードがあり、すべて正常に機能しました。.6 が出たとき、Cassandra と thrift をアップグレードしましたが、コードにエラーが発生しました (www[dot]copypastecode[dot]com/26760/) - 必要な型を変換することでエラーを解決できましたが、現在コンパイルされているバージョンは、1 つの項目のみを読み戻すように見えます。db の変更が保存されていないのか、それとも 1 つのエントリしか読み戻していないのかはわかりません。「修正済み」コードはhttp://www.copypastecode.com/26752/です。どんな助けでも大歓迎です。
php - PHPを使用してキースペース全体を削除/削除するにはどうすればよいですか: cassandra :thrift
PHPを使用してキースペース全体を削除/削除するにはどうすればよいですか: cassandra :thrift
perl - Net :: Cassandra :: Easyを使用してTimeUUIDTypeタイプを保存および取得するにはどうすればよいですか?
次のことを行います。
結果は次のとおりです。
UUIDのNet::Cassandra :: Easy::pack_decimalに似たものは見当たりませんでした。
database - セットをCassandraにどのように保存しますか?
このJSONをCassandraのデータモデルに変換したいと思います。ここで、各配列は重複のないセットです。
var data = {"data1":{"100":[1、2、3]、 "200":[3、4]}、 "data2":{"k1"、[1]、 "k2"、[ 4、5]}}
次のようにクエリを実行します:data["data1"]["100"]セットを取得します。Cassandraでこれをモデル化する方法を知っている人はいますか?(私が思いついたのは、名前が設定値で、列の値が空の文字列である列だけでしたが、それは間違っていると感じました。)
セットをJSONまたはその他の文字列としてシリアル化することはできません。これにより、これがはるかに簡単になります。
また、data1とdata2を別々のColumnFamiliesに分割してもかまいません。これらが、同じもののキーである必要はありません。
cassandra - ノードを 1 つ追加して Cassandra クラスターを拡張する: どのポートを開く必要がありますか?
A
ホストとを含む Cassandra クラスターを想定しますB
。このクラスタは、別のホストで拡張されますC
。C
がファイアウォールで保護されたネットワーク上にあり、デフォルトですべてのパケットが破棄されると仮定します。
新しいノードが適切に機能するためにはC <> A
、どのポートとプロトコルを開く必要がありますか?C <> B
C