問題タブ [column-family]
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.
versioning - バージョン管理をサポートする NoSQL データベース (カテゴリ) は?
NoSQL 集約ストアがキー値データベース、列ファミリー データベース、またはドキュメント データベースのいずれであるかに関係なく、値のバージョン管理をサポートすると考えました。少しグーグルで調べた結果、この仮定は間違っていて、DBMS の実装に依存しているだけだと結論付けました。これは本当ですか?
私は、Cassandra と BigTable がそれをサポートしていることを知っています (両方とも列ファミリー ストア)。Hbase (列ファミリー) と Riak (Key-Value) はそうですが、Redis と Hadoop (Key-Value) はそうではないようです。Mongo DB (ドキュメント) はCouchbase を実行しますが、MongoDB は実行しません (ドキュメント ストア)。ここにはパターンがありません。経験則はありますか?(たとえば、「キー バリュー ストアには一般的にバージョン管理がありませんが、列ファミリー データベースとドキュメント データベースにはバージョン管理があります」)
私がやろうとしていること: URL から PNG 画像への Web サイトのスクリーンショットのデータベースを作成したいと考えています。バージョニングは別として、問題を解決する最も簡単なソリューションであるため、キー値ストアを使用したいと思います。しかし、ウェブサイトが変更または廃止され、データベースを更新したときに、古い画像を失いたくありません。バージョン管理のあるキー値データベースを選択したとしても、多くのキー値データベースがバージョン管理をサポートしていないという制約なしに、別のキー値データベースに切り替える余裕が欲しいです。そこで私は、集合 NoSQL データベースの連続体の中で、どのレベルの洗練度でバージョニングがデータ モデルの暗黙の機能になるのかを理解しようとしています。
hbase - HBase で選択したクラスターに列ファミリーを作成する方法
cassandra hector API では、次のように、選択したクラスターにテーブルを作成できます。HBase を使用して同じことをしたいのですが、誰か助けてもらえますか?
Cassandra を使用して行う方法は次のとおりです。
copy - Cassandra データをあるクラスターから別のクラスターにコピーする方法
異なるデータセンターに 2 つの cassandra クラスターがあり (これらは 2 つの異なるクラスターであり、multidc を備えた単一のクラスターではないことに注意してください)、両方のクラスターに同じキースペースと列ファミリ モデルがあります。最も効率的な方法で、列ファミリー C のデータをクラスター A からクラスター B にコピーしたいと考えています。他のいくつかの ColumnFamily は、時系列でキーが連続していたので、get および put 操作でコピーできました。しかし、この別の列ファミリー C はコピーできます。thrift と pycassa を使用しています。CQL COPY コマンドを実行しましたが、残念ながら CF が大きすぎて rpc_timeout が発生します。どうすればこれを達成できますか?
hbase - HBase がすべての値の列ファミリーを格納する必要があるのはなぜですか?
HBase テーブルはスパース テーブルであるため、HBase は値だけでなく、セルを識別するために必要なすべての情報 (RowKey と混同しないように Key と呼ばれることが多い) をすべてのセルに格納します。キーは次のようになります。
RowKey-ColumnFamily-ColumnQualifier-Timestamp
そして、この情報はすべてエントリごとに保存されます。そのため、追加のオーバーヘッドを削減するために、列ファミリーと列修飾子に短い名前を使用することをお勧めします。
私の質問: エントリごとに ColumnFamily を保存する必要があるのはなぜですか? 私の理解では、すべてのストア ファイルは正確に 1 つの列ファミリーに属しています。ストア ファイルごとに 1 回列ファミリー名を格納するだけで十分ではないでしょうか? これによりオーバーヘッドが削減され、任意の列ファミリー名を使用でき、すべてのエントリの列ファミリーを識別することができます。ここで何が欠けていますか?
cassandra - Cassandra キースペースに列ファミリーを挿入するためのコードを理解していますか?
私は読んでCassandra- The definitive guide by E.Hewitt
います。私は、サンプル ホテル アプリケーションのコードについて著者が説明している第 4 章にいます。本の画像を参考までに載せておきます。
HotelByCityに挿入する方法はrowkeys
次のとおりです。column Family
コードをたどるのに苦労しています。特に、非常に多くのコンテナー (マップ) が作成される理由です。Mutation
オブジェクトなどの目的は何ですか?行キーはどのくらい正確に挿入されますか?
コードの各ステップで何が起こっているのかを説明できれば、それは素晴らしいことです。この本には説明がなく、私はこれがどのように行われるかを理解することができません.
PS: 私は Java 開発者です。だから私はマップなどに精通していますが、マップが別のマップの中に詰め込まれている理由やその他の詳細については知りません
ありがとう