36個のなぜあなたは面接でした一連のライブラリサブテーブル

(1)なぜあなたはライブラリテーブルを分割したのですか?(高コンカレント設計により、システムは、どのようにデータベースレベルを設計するには?)

 

端的に言えば、サブライブラリーのサブテーブルには、我々は、混同しないことができる2人の異なるものの子供たちはライトテーブルかもしれかかわらず、サブライブラリーのある、それは関係なく、ライブラリーの、可能性があり、光のポイントテーブルかもしれません。私はあなたがシーンを捨てましょうだろう。

 

私たちがしている場合は、小さなスタートアップ企業(またはBATの会社はちょうど新しい部門を始めていた)、今20万登録ユーザー、アクティブユーザーは毎日10,000、単一のテーブル1000上のデータの量を毎日、毎秒ピーク最大10個の同時要求。日、このようなシステム、ちょうど仕事の経験の数年を見つけるために、そしてなど、研修のうち、ほんの数だけ乾燥してすることができます。

 

結果は、私たちがCEOに実行するので、多くの幸運、可能性が考えていなかった事業が急速に発展しており、数ヶ月後に、登録ユーザー数が20万人に達しており、広範な道を、私たちを降ろしました!ナンバーワン万人のアクティブユーザーが毎日!データ100,000シングルテーブル日額!毎秒最大1000の要求の最大ピーク!同社はまた、ああ緊張した数億元、資金調達の2ラウンドを滑り落ちます!同社は数百万ドルの驚異的な評価に達しました!これは、小さなユニコーンのリズムです!

 

まあ、すべての権利、今私は少し大きなプレッシャーを感じてきたので、なぜそれから?10万の以上のデータを毎日、月300万以上のデータ、そして今、私たちはすぐに数千万人を破り、単一のテーブルデータの何百万を持っているので。しかし、やっとは主張しました。要求のピークは今1000年で、我々はデータベースのサポート1000年QPSも大丈夫です、少し釣り合う、負荷を複数のマシンのラインを展開しました。しかし、我々は今、それをZezheng、少し心配に感じ始めています。

 

今後数ヶ月、私の神、CEOあまりにNiubi、同社が100万人のユーザーに達している、同社は元ああ十億の資金を調達するために続け!会社の評価は、ドルの驚異十億に達し、今年のベスト国内の新興企業ののスターとなっています!日は、我々はあまりにもラッキーです。

 

毎日の何百万人のアクティブユーザーの数は、毎日新しい単一テーブルのデータができるだけ多くのデータの総量の存在テーブル50万としては2万人に達しているので、しかし、我々は、残念ながら、またあります!私はああ運ぶことができませんでした!データベースのディスク容量が消費し続けて!8000から5000までの同時驚異ピーク!いいえ冗談ない、弟。私は今、それがハングアップされたシステムがサポートできないことを保証します!

 

あなたはここを参照してくださいので、さて、あなたは理解するほとんどのサブライブラリーのサブテーブルは、実際には、これは行くをあなたの会社の事業開発を追跡するためにそれ子供である方法です、より良いあなたの会社の事業開発、より多くのユーザー、データの量大きな、要求された量より大きな、そしてあなたは確かに、単一のデータベースを運ぶことができませんでした。

 

たとえば、あなたは、あなたがそれに耐えてください、十単一のテーブルデータの何百万ものがありますか?絶対にありません、単一テーブルのデータが大きすぎる、それは非常に非常に遅い実行するかもしれないあなたのSQLの背中に、あなたのSQL実行のパフォーマンスに影響します。一般的には、数百万倍に私の経験、単一のテーブルに関しては、パフォーマンスが比較的悪く、あなたはテーブルをスコア。

 

サブテーブル、あなたは何を意味するのですか?これは、複数のテーブルへのデータのテーブルであり、あなたがテーブルをチェックするときに照会します。そのようなサブテーブルデータテーブルでユーザにユーザIDに記載の方法。そして、あなたは、ユーザーのためにテーブルをご希望の操作の操作。これは、各テーブル内のように、制御可能な範囲内の各テーブルにデータの量を制御することができる固定2,000,000です。

 

サブライブラリー、あなたは何を意味するのですか?あなたのライブラリーは、2000年の同時までをサポートするための一般的な経験、ありませんあまりにも多く、拡張、そしてあなたが最高の約1000秒に保た健全な単一のデータベースの同時実行値でなければなりません。その後、複数のライブラリのデータベース、よりよい図書館を訪問する訪問の時にデータを分割することができます。

 

これは、サブライブラリーのサブテーブル、なぜべきサブライブラリーのサブテーブルと呼ばれていますか?あなたはポイントを得ます

 

ポイントテーブルのミドルウェアを使用(2)サブライブラリ?異なるサブライブラリーサブテーブルミドルウェアはどのような利点と欠点がありますか?

 

実際には、これはあなたが各ミドルウェアの利点と欠点を理解してどのようなミドルウェアサブライブラリーのサブテーブルを見ているとは何でしょうか?そして、どのようなミドルウェアサブライブラリーのサブテーブルあなたが使用していました。

 

より一般的には、次のとおりです。コーバー、TDDL、アトラス、シャーディング-JDBC、mycatを

 

コバー:アリB2Bのチーム開発とオープンソース、プロキシ層プログラムに属します。また、早期に年間使用することができますが、近年では更新されていない、基本的には何もない人々、ほとんど捨てられたステータスバーと見なさ。別々の読み取りおよび書き込み、ストアドプロシージャ、およびクロスデータベースは、ページングなどの操作に参加する。サポートしていません

 

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

 

アトラス:360オープンソース、使用中の以前に、いくつかの企業を代理層プログラムに属するが、大きな問題は、5年前に維持するために、最新のコミュニティです持っています。だから今、いくつかの基本的なを持つ企業。

 

シャーディング-JDBC:クライアント層に属する详细オープンソースプログラム。実際、SQL構文のサポートを送信する(厳しすぎる、より多くのではない、とサブライブラリーのサブテーブル、別の読み込みをサポートして書き込むために立ち上げ、現在のバージョン2.0、ID、分散型発電、柔軟総務最善となりますので、使用は、比較的よりまだ前取引の種類、TCC情勢)。そして、以前に使用した会社はいくつかのより多くなります(使用するために会社の登記の公式ウェブサイトでは、今まで2017年から見ることができ、多くの企業が使用されている)、現在のコミュニティはまた、開発やメンテナンス、だけでなく、されています個人的に私は今、選択プログラムとみなすことができると思い、よりアクティブにします。

 

mycat:ベースのコバー変換は、非常によくプロキシ層プログラムのサポート機能を属し、現在は非常に火災と成長している人気のデータベースミドルウェアである必要があり、コミュニティは、いくつかの企業が使用し始めたがある、非常に活発です。しかし、確かに若く、経験の少ない気性をJDBCをシャーディングと比較。

 

したがって、要約すると、実際には、両者が検討するのに使うことができ、シャーディング-JDBCおよびmycatある今その対価をお勧めします。

 

このアプローチのシャーディング-JDBC利点があることは、クライアント層の導入、低運転コストとメンテナンスコスト、プロキシ層、高パフォーマンス、彼らはアップグレードされたバージョンを再再リリースされている様々なシステムをアップグレードする必要がある場合は、何を必要としない二次再送要求、システムは、各カップリングシャーディング-JDBC依存を必要とします。

 

このアプローチのMycat欠点は、ミドルウェア、運用・保守、高い運用・保守コストの独自のセットを展開するために、そのプロキシ層の必要性が、あなたは自分のミドルウェアをアップグレード遭遇などがそこにある場合は、透明であり、各項目のメリットですライン上。

 

一般的に言えば、これら2つのプログラムが実際に選択することができますが、私は個人的に中小企業になりシャーディング-JDBC、クライアント層スキーム軽量、低メンテナンスコスト、追加の増加マンパワー、だけでなく、システムの複雑さを使用する中小企業をお勧めします下、あまりないプロジェクト。

 

しかし、このようなプロキシ層プログラムは、ので、大企業のシステムやプロジェクトがあるかもしれませんmycat大企業の最良の選択は、それが取得するために、その後、mycatを研究し、維持するために、個人専用の直接透明多数のプロジェクトが最良である、偉大なチームは、適切にスタッフ、非常に大きいですあなたが使用することができます。

 

私たちは、データベースミドルウェアは、自己啓発ですが、また、プロキシ層を使用し、以降のクライアント層を使用しました

 

(3)データベースがどのように分割する正確にどのように垂直方向または水平方向に分割しますか?

 

スプリットレベルの意味は、複数のライブラリが行くために複数のテーブルを一つのテーブルからデータを取得することですが、各ライブラリのテーブル構造は同じですが、データを置くために、各ライブラリテーブルは、すべてのライブラリ異なっていますデータテーブルは、すべてのデータを追加します。スプリットレベルの意味、それがさらにデータライブラリを入れ、その後、高い並行性を抵抗する複数のライブラリを使用することで、拡張を行うためのより多くのストレージ容量を持つライブラリがあります。

 

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

 

これは、私は必ずしも私たちは、自分自身を持っていることが大きなテーブルを開くために、Ordersテーブル、ペイテーブルを注文し、商品テーブルを注文する学生の多くを行っていることを言っていない、実際には非常に一般的です。

 

各テーブル内のデータの量がSQLのパフォーマンスを確保するために一定の範囲内に制御されるように、分割レベルテーブルは、N個のテーブルに、テーブルのサブテーブルです。SQLのパフォーマンス悪化し、単一テーブルのデータ量それ以外の場合は、大きいです。通常約2万行、あまりないが、あなたはまた、5万ドル、100万可能性があり、どのように特定の操作を見ています。あなたのSQLより複雑な、それは単一のテーブル内の行より少ない数を聞かせすることをお勧めします。

 

まあ、それはライブラリーまたはサブサブテーブルであるかどうか、我々はそれらのデータベースミドルウェアをサポートすることができます上記のすべてと言います。ミドルウェアは、あなたがサブサブテーブルデータベースの後に行うことができます基本的には、指定したフィールドの値に基づいて、ミドルウェア、例えば、ユーザIDは、自動的に対応するライブラリアップにルーティングし、自動的に行くことに対応するテーブルにルーティング。

 

あなたは、サブライブラリーのサブテーブルにどのようにあなたのプロジェクトを考える必要がありますか?一般的に、垂直分割、あなたには、いくつかの分割を行うために、特にテーブルのフィールドのいくつかのために、テーブルレベルで行うことができ、スプリットレベル、あなたが言うことができ運ばないことで複雑な、またはあまりにも多くのデータ、容量ベアリングれていませんあなたは何分割するフィールドの解体に、あなたは良いしたい、ポイントテーブルは、あなたが行くには、各ライブラリを分割した場合でも、それについて考え、同時容量OKですが、テーブルの各ライブラリまたはあまりにも、あなたは、各テーブルのデータ量が大きくないことを確認するために、テーブルを分離するためのシートを獲得します。

 

しかし、また、ここでの実施形態のサブライブラリサブテーブルの2種類のポイントの範囲に記載の方法は、各ライブラリは、時間の一般的な範囲によって、例えば、連続したデータであるが、それがあるので、これはあまり一般的に使用されホットな問題になりやすい、彼らは最新のデータに多くのトラフィックを果たしている、または一様に、より一般的に使用されるフィールドに基づいて分散ハッシュルック。

 

点の範囲、利点は、それが簡単であるとき、背中の拡大は、限り、あなたはそれを毎月ライブラリーを作製するために、準備ができているとして、新しい月に、とき、自然に、新しい書き込みをするということですライブラリー;欠点が、ほとんどの要求は、最新のデータにアクセスできます。実際の生産範囲、シーンを見て、だけでなく、ユーザーが最新のデータにアクセスしますが、今でもデータと履歴データにアクセスします

 

ハッシュポイントシステム、メリットライブラリに均等に配分することができ、圧力を要求しなかったデータの量という、欠点は、展開があまりにも面倒で、このようなプロセスのデータ移行があるだろうと述べたことです

 

おすすめ

転載: www.cnblogs.com/xiufengchen/p/11259293.html