検索
ホームページデータベースmysql チュートリアルmysql から hbase へのデータ移行に関する考えと設計

1. 移行の理由

ビジネスの発展により、mysql を使用してインデックスを作成し、検索を行うと、たとえば、テーブル全体がダンプされるたびにデータ フローのボトルネックが発生します。過度の圧力がかかり、消費が発生します。現在のデータ量は基本的に 1 億レベルに達しています。mysql でより良いサービスを提供したい場合は、これに基づいてサブデータベースとテーブルを検討する必要があります。 hbase は mysql よりもデータ量がはるかに多く、カラムの拡張も非常に便利なので、データの保存に使用されます

2. リレーショナル データベースと Nosql のいくつかの違い

(1) 保存方法の違い

mysql、sqlserver、oracleなどのリレーショナルデータベースでは、下図のようにデータは行単位で保存されます。


しかし、hbaseではすべてのデータは行単位で保存されます。


hbase の論理モデルは次のとおりです:


その内: com.cnn.ww は、mysql の主キーの概念に相当する rowkey に対応します。

コンテンツ、アンカー: この 2 つは、物理ストレージの観点からは、同じ列ファミリーのデータが同じファイル

cnnsi.com、mylook.ca に格納されます。 hbase では、列ファミリーの下で列を次のように指定できます。動的に追加される

対応するグリッド データはユニット データ、つまり対応する行キーを表します。cf: 列の下の特定の値

ここで、tn: はタイムスタンプ、異なるバージョンを表します。

そのうちの1つが格納されるユニットデータの構造は次のとおりです:



(2) CRUDのいくつかの違い

CRUDはデータベースの最も基本的で一般的に使用される操作です。たとえば、テーブル作成ステートメントは mysql には適用されません。詳しくは、以下に示すように、hbase シェルで 'table'、'columnfamily' を作成します

という名前のテーブルを作成できます。は columnfamily であり、その他のブロックサイズとバージョン データはデフォルトです

read データを取得するとき、対応するデータは、get 'table'、'row'、'cf:column' などの hbase ステートメントを通じて取得できます。 、hbase には対応する更新の概念はありませんが、新しいバージョンがタイムスタンプから反映されます。 使用するステートメントは

put 'table'、'row'、'cf: name'、'value' です。

value の値を対応する cf 列ファミリーに割り当てます

mysql でのデータの削除の違いは、行を直接削除するか、hbase で特定の列を空に設定することだけです。特定の列を直接削除できます

(3) mysqlのインデックス

の違い hbaseではインデックスを作成したりクエリをフィルタリングしたりできますが、hbaseでは行キーに基づくクエリのみがサポートされており、これが最も高速です

(4) mysqlからnosqlへの開発の感想

リレーショナルデータベースは長い歴史がありますが、データ量が増大する例えばmysqlデータベースの場合、データ量が数億以上になると、クエリの効果は、最終的には主キーに従ってのみ実行されるか、徐々にサブデータベースおよびサブテーブル モデルに発展する可能性があります。データベースとサブテーブルは、運用、保守、使用に多くの手間をもたらします。そのため、hbase を使用してデータ量が劇的に増加するにつれて、nosql データベースの主キー開発 (nosql は SQL だけでなく) も徐々に開発され、拡張されました。例として nosql では、TB および PB データをサポートしており、列の拡張は特に柔軟です

(5) hbase はなぜ大量のデータを保存できるのか

実際、hbase は mysql サブデータベースの結果と見なすことができます唯一の違いは、mysql のサブデータベースとテーブルの分割がインデックスなどをサポートしていることですが、本でわかるように、hbase のデータは列に従って格納されます。データが大きすぎる場合は、以下に示すように行ごとに分割されます:



異なるリージョン 異なるマシンに配置され、最終的にマスターによって管理されます。これは分割と同等です。大量のデータを保存するための行と列

3. データ移行で発生するいくつかの問題

(1) ジョイントインデックスの問題

たとえば、mysql には、次のようなジョイントインデックスの状況があります。製品とカテゴリの対応付け 特定の製品のすべてのカテゴリを取得する必要があり、特定のカテゴリのすべての製品も取得したい場合は、mysql のジョイント インデックスを直接たどることで要件を満たすことができます。 hbase で rowkey に従ってのみクエリを実行できる場合はどうすればよいでしょうか? 関連するデータを読み取った後、次の 2 つの解決策が得られました。 1. hbase では、行の後に行を続けることができます。共通の列ファミリーがある限り、上記の状況では、以下に示すように、行キーによって分類された幅広いテーブルを構築できます

分類 ID、行キーとして

product_id、列名として

値は次のように格納されます削除するかどうか

上記の行キーは分類IDです。行からすべてのproduct_idを直接取得し、それを自分で削除するかどうかをフィルタリングできます

2. 上位テーブルの構築とはつまり、hbase は辞書順にソートされるため、それほど多くの列は必要なく、次の設計を実行できます
classification id_product id を rowkey として使用します

1から始まる行をスキャンしてすべてのデータを取得する限り

基本的に、上記の2つのメソッドはデータを保存するためのセカンダリインデックスを構築します


上記はデータの移行ですmysql より hbase に関する考え方と設計に関するコンテンツ。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQLは、他のRDBMSと比較してどのように同時性を処理しますか?MySQLは、他のRDBMSと比較してどのように同時性を処理しますか?Apr 29, 2025 am 12:44 AM

mysqlhandlesconcurrencyusing amixofrow-levelandtable-levellocking、主にthroughnodb'srow-levellocking.comparedtootherrdbms、mysqlのsapproachiseformanyusecasesecasesbutmayfaceChallengeswithdeadlockdlacklikeRisikErisikErikErikErikErikErikErikErikErikErikErikErikErikErikErikeを使用してください

MySQLは、他のリレーショナルデータベースと比較してトランザクションをどのように処理しますか?MySQLは、他のリレーショナルデータベースと比較してトランザクションをどのように処理しますか?Apr 29, 2025 am 12:37 AM

mysqlhandlestransactionsefectivectivelivationtivelivational supportingingacidpropertiessimilArtopostgreslesclandoracle.1)mysqluseSesrepeatable-readededededededededededefaultisolation level

MySQLで利用可能なデータ型は何ですか?MySQLで利用可能なデータ型は何ですか?Apr 29, 2025 am 12:28 AM

MySQLデータ型は、数値、日付と時刻、文字列、バイナリ、空間型に分割されます。正しいタイプを選択すると、データベースのパフォーマンスとデータストレージを最適化できます。

MySQLで効率的なSQLクエリを作成するためのベストプラクティスは何ですか?MySQLで効率的なSQLクエリを作成するためのベストプラクティスは何ですか?Apr 29, 2025 am 12:24 AM

ベストプラクティスには以下が含まれます。1)データ構造とMySQL処理方法の理解、2)適切なインデックス作成、3)SELECT*、4)適切な結合タイプの使用、5)サブQueriesを使用して、5)慎重に使用します。これらのプラクティスは、MySQLクエリを高速であるだけでなく、保守性、スケーラビリティ、リソース効率もすることができます。

MySQLはPostgreSQLとどのように違いますか?MySQLはPostgreSQLとどのように違いますか?Apr 29, 2025 am 12:23 AM

mysqlisbetterforspeedandsimplicity、適切なforwebapplications; postgresqlexcelsincomplexdatascenararios withobustfeatures.mysqlisidealforquickprojectsandread-havytasks、whilepostgressqlessqlispreredforforivationsRedictrictiontrictdateinitegriTinitegriTiontegriTioniitaintegrategrisioniationegrisioniaty

MySQLはデータレプリケーションをどのように処理しますか?MySQLはデータレプリケーションをどのように処理しますか?Apr 28, 2025 am 12:25 AM

MySQLは、非同期、半同期、およびグループ複製の3つのモードを介してデータの複製を処理します。 1)非同期の複製パフォーマンスは高くなりますが、データが失われる可能性があります。 2)半同期複製により、データセキュリティが向上しますが、遅延が増加します。 3)グループレプリケーションは、高可用性要件に適したマルチマスターレプリケーションとフェールオーバーをサポートします。

説明ステートメントを使用してクエリパフォーマンスを分析するにはどうすればよいですか?説明ステートメントを使用してクエリパフォーマンスを分析するにはどうすればよいですか?Apr 28, 2025 am 12:24 AM

説明ステートメントは、SQLクエリのパフォーマンスを分析および改善するために使用できます。 1.説明ステートメントを実行して、クエリプランを表示します。 2。出力結果を分析し、アクセスの種類、インデックスの使用量に注意し、順序を結合します。 3.分析結果に基づいてインデックスを作成または調整し、結合操作を最適化し、フルテーブルスキャンを回避してクエリ効率を向上させます。

MySQLデータベースをバックアップして復元するにはどうすればよいですか?MySQLデータベースをバックアップして復元するにはどうすればよいですか?Apr 28, 2025 am 12:23 AM

論理バックアップにMySQLDUMPとホットバックアップにMySQLenterPriseBackupを使用することは、MySQLデータベースをバックアップする効果的な方法です。 1. mysqldumpを使用してデータベースをバックアップします:mysqldump-uroot-pmydatabase> mydatabase_backup.sql。 2。ホットバックアップにmysqlenterprisebackupを使用:mysqlbackup - user = root-password = password - backup-dir =/path/to/backupbackup。回復するときは、対応する寿命を使用します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター