個人財務 RDBMSモデルからHBase-Dummiesに移行する

RDBMSモデルからHBase-Dummiesに移行する

Anonim

アプリケーションの設計フェーズに直面していて、HBaseが適していると思われる場合は、HBaseのデータモデルとアーキテクチャーに合わせて行キーとスキーマを設計する必要があります正しいアプローチ。しかし、RDBMSのためにもともと設計されたデータベースをHBaseに移行するのが理にかなっていることがあります。

このアプローチが理にかなっている一般的なシナリオは、スケーラビリティの限界に達しているMySQLデータベースインスタンスです。 MySQLインスタンス( シャーディング、つまり )を水平にスケーリングするためのテクニックがありますが、MySQLは単にシャーディング用に設計されたものではないため、このプロセスは通常面倒で問題になります。

<!リレーショナルモデルからHBaseモデルへの移行は比較的新しい分野です。しかし、一定の確立された考え方のパターンが浮上しており、移行に近づくときに従うべき3つの重要な原則に合体しています。これらの原理は、非正規化、重複、999および999インテリジェントキー(DDI)

である。非正規化: リレーショナルデータベースモデルは、a)正規化されたデータベーススキーマ、およびb)SQL操作に応答するためのテーブル間の結合に依存する。データベースの正規化は、データが更新され、取得されるときに、データの損失、冗長性、およびその他の異常を防ぐ技術です。 <!正規化されたデータベーススキーマに達するために専門家が従う多くのルールがあります(データベースの正規化は全体的な検討です)が、通常はより大きなテーブルをより小さなテーブルに分割して関係を定義することになりますそれらの間の。データベースの非正規化は正規化の逆です。より小さいより具体的なテーブルは、より大きなより一般的なテーブルに結合されます。 <! - 3 - > これは、HBaseに移行する際の共通のパターンです。なぜなら、テーブル間で結合が提供されず、コストのかかるディスク操作が必要なため結合が遅くなるからです。正規化によって得られた保護が無効であるため、アップデートおよび回復の異常に対する防御はHBaseクライアントアプリケーションの仕事です。 重複:

  • データベーススキーマを非正規化すると、複数のテーブルにまたがる高価な読み取り操作を避けることができるため、データの複製が終了する可能性があります。余分なストレージについては心配しないでください(当然の理由で)。 HBaseの自動スケーラビリティを利用することができます。ただし、クライアントアプリケーションはデータを複製するために余分な作業が必要になることを覚えておいてください。HBaseは、行間で行レベルでない原子操作(HBASE-5229 JIRAで説明されている例外を除く)表。 インテリジェントキー:

    HBaseに格納されたデータは行キーで順序付けされ、行キーはシステムによって提供される唯一のネイティブインデックスであるため、行キーの注意深いインテリジェントなデザインが大きな違いを生み出す可能性があります。たとえば、行キーは、サービス指図番号とサービス指図を配置した顧客のID番号の組み合わせになります。

    この行キーの設計により、同じ表の同じ行キーを使用して、サービス指図に関連するデータを検索したり、顧客に関連するデータをルックアップしたりすることができます。この手法は、一部のクエリでは高速になり、コストのかかるテーブル結合を回避します。

    これらの特定のパターンを明確にするために、顧客連絡先情報テーブルを作成し、典型的なサービス注文データベースのコンテキスト内に配置します。この図は、正規化されたサービスオーダーデータベーススキーマの外観を示しています。

    RDBMS正規化の規則に従って、サービスオーダーが閉じられ、おそらく削除されたときに顧客データが失われないように、サービスオーダーテーブルとは別にサンプルCustomer Contact Informationテーブルを設定します。 Productsテーブルに対しても同じアプローチをとってください。つまり、サービス注文とは独立して新しい製品を架空の会社データベースに追加することができます。

  • RDBMS結合操作に依存することにより、このスキーマは、特定の製品に対して開かれたサービス注文の数と、その製品が使用されている顧客のロケーションとを明らかにするクエリをサポートします。 それはすべて上質で素敵ですが、RDBMで使用するスキーマです。このスキーマをHBaseスキーマにどのように移行しますか?次の図は、可能なHBase方式(DDI設計パターンに従う方式)を示しています。

    顧客連絡先情報テーブルは、以前に使用された外部キーの代わりに顧客名と連絡先情報を含めて非正規化されています。また、顧客連絡先情報テーブルをそのままにしてデータを複製します。サービス注文テーブルと顧客連絡先情報テーブルの結合は不要です。

  • さらに、製品番号と顧客番号とを組み合わせてサービス注文番号(例えば、A100 | 00001)を形成するインテリジェントな行キー設計が採用されている。このインテリジェントキーを使用すると、サービスオーダテーブルは、製品の不具合や現在製品の問題が発生している顧客に関する重要なレポートを提供できます。 これらすべてのクエリはすべて、アプリケーションの行レベルのアトミックな方法でHBaseによってサポートされます。 HBaseが行キーを注文し、それらを辞書順にソートすることを知っているので、アプリケーションはレポートのスキャンを発行するときにデータの局所性についてある程度推測することができます。

    HBaseスキーマで表されるサービスオーダーデータベースは、比較的簡単な例ですが、HBaseがRDBMS世界と交差することがある場合があることを示しています(たとえば、すべてのA *シリーズ製品番号はすべて一緒に格納されます)。重要な価値を提供します。架空の会社がテラバイトまたはペタバイトのサービスコールデータを保存する場合、HBaseはコスト、信頼性、性能、および規模の点で大きな違いを生み出します。

サービスオーダHBaseスキーマは、いくつかの異なる方法で設計できます。確かに、設計はすべてサポートする必要のあるクエリに依存しますが、HBaseアーキテクチャとDDIデザインパターンを十分に理解している限り、リレーショナルデータベースを非常に強力なHBaseアプリケーションに移行して運用することができます。

この例では、HBaseクライアントAPIを利用するJavaアプリケーション、またはおそらくApache Thriftを使用する別の言語を使用してクエリを実行したと仮定しています。このアプリケーションモデルは要件をうまく適合させることができ、架空のサービス会社にとって便利なパフォーマンスとカスタマイズオプションを提供します。

RDBMSモデルからHBase-Dummiesに移行する

エディタの選択

自転車の点検チェックリスト - ダミー

自転車の点検チェックリスト - ダミー

すぐに自転車の点検をするために数分。あなたの自転車を一時的に与えることは、あなたの次の乗り心地の安全性、快適性、そして楽しさを高めることができます。乗車準備の一環として、次の手順に従ってください:車輪のクイックリリースレバーを開閉して、確認します。

必須サイクリング用具 - ダミー

必須サイクリング用具 - ダミー

あなたはバイクの乗り心地をさらに楽しくするために何百万ものものを買うことができます。自転車用に必要なアクセサリーをいくつかご紹介します。ヘルメット:ヘルメットを着用することはオーストラリアとニュージーランドの法律です。

自転車の範囲を閲覧可能 - ダミー

自転車の範囲を閲覧可能 - ダミー

あなたはサイクリングをすることに決めましたが、その重要なキットを欠いている - バイク!あなたが望む自転車のタイプを正確に知っていない限り、良いアドバイスは、あなたの時間を費やして、自転車で何をするのか、どこに乗るのかを本当に考えてみることです。

エディタの選択

アプリとプライバシー - ダミーを特定する

アプリとプライバシー - ダミーを特定する

Spotifyアプリケーションに登録すると、あなたの個人的な詳細の一部にアクセスする。たとえば、Top10アプリを使用してプレイリストを公開するには、既存のFacebookアカウントにリンクする必要があります。このプロセス中、Facebookはあなたに特定の種類の共有を許可するかどうか尋ねます。

モバイル対応携帯電話を識別する - ダミー

モバイル対応携帯電話を識別する - ダミー

SpotifyモバイルはiPhoneで最も人気がありますが、優れたAndroidバージョン(basks Androidマーケットの5つ星評価のうち5つの評価では5位に入っています)が急速に追いついています。

特集 - ダミー

特集 - ダミー

スポットメイキングは、モバイルでも、あらゆる音楽への普遍的な即時アクセスを可能にしますデバイスまたはデスクトップコンピュータ。 Facebookは人々が古い友達と再会して新しい友達を作るのを助け、Spotifyの助けを借りて青春の歌を再発見し、友人や検索を通じて新鮮な音楽を発見しました。

エディタの選択

IOSアプリケーションでオブジェクト指向設計を使用する方法 - ダミー

IOSアプリケーションでオブジェクト指向設計を使用する方法 - ダミー

IOSは、動作がオブジェクトに関連付けられているプログラムを設計するさまざまな方法です。説明するために、紅茶とスープの作り方を検討することを検討してください。しかし、即座に代わりに活動に飛び込んではいけません。探偵が犯罪現場に入るように行動してください。

IOSアプリケーションでハイレベル抽象化を使用してビデオを再生する方法 - ダミー

IOSアプリケーションでハイレベル抽象化を使用してビデオを再生する方法 - ダミー

このセクションでは、MPMoviePlayerViewControllerクラスの高レベル抽象化を使用してiOSアプリケーションでビデオを再生する方法を説明します。 - (IBAction)playVideo:(id)sender {MPMoviePlayerViewController * moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];このコードは、ビデオビューコントローラ内のTTTVideoViewControllerファイルからです。 [self presentMoviePlayerViewControllerAnimated:moviePlayer];}シンプルさ自体!必要なのはURLです。

IOSアプリケーションでJavaスクリプトオブジェクト表記を使用する方法 - ダミー

IOSアプリケーションでJavaスクリプトオブジェクト表記を使用する方法 - ダミー

JavaScript Object Notation (JSON)はiOSアプリのデータを表現する上で事実上の標準になっています。 JSONを使用して、Web上でデータを転送したり、長期保存データを保存および取得するためのフォーマットとして使用することができます。 JSONは、人間が読める形式であり、マシンが理解しやすい形式です。 JSONのデータは1つにまとめることができます...