いくつかのサブライブラリーのサブテーブル面の質問

サブテーブルサブライブラリーの高可用性システムの重要なポイント高い同時実行で、面接のためのインターネット企業がしばしば聞かれます。

なぜサブライブラリーサブテーブル(高コンカレント設計、データベース・レベルの設計方法のシステム、)?

まず、明確に、そしてサブサブライブラリーのテーブルが2つの異なるものですし、二つの別々の概念があります。そして、サブライブラリーのサブテーブルは、データベースサービスを防ぐためのものですので、交通同じ時間(追加、削除、検索を変更するために)対処戦略の過度のダウンタイムやデザインの結果。

なぜあなたのライブラリました

一般的な経験として、単一のライブラリは2,000並行ボリュームをサポートし、そして好ましくは1000で維持されています。2万同時需要量に応じて、拡張を必要とする、あなたは、特定の条件に基づいて複数のライブラリのデータベース、訪問の時に単一のライブラリの圧力性能を容易にするための単一のリポジトリへのアクセスを、データを分割することができます。

なぜあなたは見ませんでした

サブテーブルは、データの量、単一のテーブルが大きすぎると、それはSQL文の実行性能に影響を与えるだろう、と同じです。サブテーブルは、特定のポリシーに従って、クエリ時間はまた、クエリが狭くされるように、データの範囲に対応するテーブルを照会するための特定の戦略に従う複数のテーブルを単一のテーブルにデータを分割します。そのようなサブテーブルは、ユーザIDに応じて、データテーブル内のユーザーに、その上にユーザが行ったテーブルID CRUD第1の動作を見つけます。これが実行されたSQL文のパフォーマンスを高めるために、一定の範囲内に制御され、各テーブル内のデータの量を置きます。

使用されているミドルウェアサブライブラリーのサブテーブルは何ですか?異なるサブライブラリーサブテーブルミドルウェアはどのような利点と欠点がありますか?

サブライブラリーのサブテーブルの共通ミドルウェアがありますようにコバー、TDDL、アトラス、シャーディング-JDBC mycatとを。

コバー

コバーは、アプリケーションサーバとデータベースサーバの間で、プロキシ層プログラムに所属する、B2Bのチーム開発とオープンソースアリです。コバークラスタを介してアプリケーションにアクセスするためのJDBCドライバは、SQLとライブラリのルールに基づいてコバーポイントは、SQLのためにブレークダウンし、別のMySQL Clusterデータベースインスタンスの実行に配布します。コバー分離は、ストアドプロシージャを読み取るサポートしていない、およびクロスデータベースは、ページングなどの操作に参加します。また、早期に年間使用することができますが、近年では更新されていない、基本的には何もない人は、排除されます。

TDDL

TDDL淘宝網のチーム開発、クライアント層方式に属します。これは、基本的な文法とCRUD別々の読み取りをサポートして書きますが、参加をサポートしていません、マルチテーブルクエリ構文。現在はあまり使用しない、また、淘宝網ダイヤモンド構成管理システムに依存する必要があるため。

アトラス

アトラス360は、プログラムがプロキシ層に属し、開かれています。そこその後にするために使用いくつかの企業がありますが、すべて5年前に維持するために、最新のコミュニティ、そして今の会社は基本的に行って。

シャーディング-JDBC

シャーディング-JDBC详细は、クライアントプログラムに属する層開かれています。SQLの構文については、このミドルウェアより多くのサポート、あまりにも限定的ではありません。バージョン2.0はまた、サブライブラリーサブテーブルをサポートする個別の読み取りおよび書き込み、ID、分散型発電、柔軟総務(ベストエフォートサービス型の取引、TCCの業務)を開始しました。現在、コミュニティも開発され、維持されてきた、よりアクティブに、あなたは今も、プログラムを選択することができます。

私の猫

mycatがコバー変換をベースに、プロキシ層プログラムを属します。これは、機能が完全であるサポートデータベースミドルウェアは、現在、非常に火です。コミュニティは非常にアクティブに、常に更新されています。シャーディング-JDBC、あまりにも若く、経験の少ない気性と比較すると。

概要

要約すると、シャーディング-JDBCおよびmycatの使用を検討することをお勧めします。

こののシャーディング-JDBCの利点は、展開、運用、保守コストをかけず、クライアント層ますので、比較的低いです。同時に、第二層は、高いパフォーマンスを要求エージェントを転送する必要はありませんので。アップグレード発生した場合でも、あなたは様々なシステムをアップグレードする必要があるシステムでは、カップリングシャーディング-JDBC依存を必要とするため、再再リリースバージョンです。

このアプローチのMycat欠点は、あなたがプロキシを展開する必要があるということですので、運用および保守コストが高くなるであろう。アップグレードする場合でも、それは各プロジェクト(デカップリング)のための透明な利点は、その後、唯一のライン上のミドルウェアに対処する必要があります。

一般的に言えば、これら2つのプログラムがすべて選択することができます。これは、することが推奨され、クライアント層スキーム軽量、低メンテナンスコストがあるため、より良いシャーディング-JDBCを使用するには、中小企業、代理層プログラムは、複数のシステムやプロジェクトを頻繁に使用して対処することができるので、提案されている大規模な企業は、mycat良く使用することに比べてメンテナンスコストが、彼は高くなりますと言いますが、中規模および大規模企業は、まだこの人の権利を欠いています。

具体的には、データベースが分割され、どのように垂直または水平に分割?

スプリットレベルの概念

スプリットレベルの意味は、複数のライブラリに複数のテーブルのテーブルにデータを分割することです。各ライブラリーのためのテーブル構造が同じであるが、データが同じテーブルに格納されていない場合、各データベース・テーブルのデータは、一緒になって、すべてのデータの要約です。均等各ライブラリに格納されたデータテーブルを分割します有意水準、ライブラリーは、拡張のためのライブラリーの複数の手段によって複数の同時高いバーだけでなく、記憶容量に依存しています。

縦長、スプリット

手段は、そのは、テーブルの多くは、複数のフィールドまたは上記のデータベース・テーブルを複数に分割するようにされ、垂直分割、各データベーステーブルの構造が異なる、各ライブラリーの表は、フィールドの一部を含んでいます。一般的には、少数の内部別のテーブルに、内部テーブルに低周波電磁界への、より多くのアクセスを高周波場を訪問します。データベースがキャッシュされているので、あなたはあまりアクセスし、高周波ラインフィールドは、それがより良い、キャッシュでパフォーマンスをより多くの行をキャッシュすることができます。これは、一般的に、テーブルレベルのより多くのいくつかをやっています。

水平方向と垂直分割分割シーン

いわゆるスプリットレベルのテーブル、テーブルが分割されています。各テーブル内のデータの量は、SQLのパフォーマンスを確保するために一定の範囲内に制御されるように、具体的には、テーブルは、N個のテーブルに分割されます。それ以外の場合は、単一のテーブルには、SQLの性能も悪化しているデータ量が多い、通常は約200万行、あまりありません。あなたのSQLは、より複雑な場合は、我々は、単一のテーブルの行数が少ないようにしよう。

かどうか、サブテーブルサブライブラリー、すべての主要なデータベースミドルウェアをサポートすることができます。あなたのサブテーブルの後にこれらのミドルウェアサブライブラリーは、指定された値が自動的に上記の表と対応するライブラリに対応するフィールドにルーティングされます。次に、あなただけの行にどのようにプロジェクトのサブライブラリーサブテーブルを検討してください。一般的に、垂直解像度が何かの分割を行うこと、すなわち、特にテーブルの一部のフィールドは、テーブルレベルで行うことができる、分割レベル負荷容量が、またはできない、それはフィールドによって行うことができないので、それは複雑であってもよいです内部に別のデータベーステーブルに配布します。

二つのサブライブラリープログラムのポイント表

ここでは、サブプログラムライブラリサブテーブルとその長所と短所の2種類について話をします。

1点の範囲に記載の方法。例えば、時分割サブライブラリテーブルによれば、各データベース・テーブル・データは、連続時間領域に格納されています。しかし、このアプローチはほとんどそれがホットな問題を生じやすいので、彼らは最新のデータに多くのトラフィックを再生している使用されていません。このアプローチの利点は、拡大がいる限り、このような次の新しい月に、それに毎月のライブラリーを作製する準備ができているように、非常に単純であるときに、自動的に新しいライブラリにデータを書き込むことです。欠点は、要求の大半は、最新のデータにアクセスしている場合は、ここでは、設計されたサブライブラリーのサブテーブルが高い同時実行に対処するのではなく、単純な拡張である、ということです。

ハッシュに従って2.分布。均一な分散に応じてフィールドのハッシュ値は、より一般的に使用されます。各データベース・テーブルのために割り当てられたデータの平均量という点で有利と圧力を要求し、膨張面倒欠点は、データがハッシュ値を再計算し、別のデータベーステーブルに再割り当てする必要がある前に、すなわち、データ移行プロセスが存在することになるからです。

 

「人の幸せな瞬間は、右の人を見つけることです.TAは、あなたの欠点に対処し、あなたのすべてを愛します。」

おすすめ

転載: www.cnblogs.com/yanggb/p/11214339.html