sql >> データベース >  >> RDS >> Mysql

PHP Webアプリケーション:mysqlデータベース設計のベストプラクティスに関する質問

    WordPressのホスティングサービスであるwordpress.comのデータベースアーキテクトと話をしました。彼は、彼らがすべての顧客を一緒にホストする1つのデータベースから始めたと言いました。結局のところ、単一のブログサイトのコンテンツは実際にはそれほど多くはありません。単一のデータベースがより管理しやすいのは当然のことです。

    これは、数百、数千の顧客を獲得するまではうまく機能し、スケールアウトする必要があることに気づきました。 、複数の物理サーバーを実行し、各サーバーで顧客のサブセットをホストします。サーバーを追加すると、個々の顧客を新しいサーバーに移行するのは簡単ですが、個々の顧客のブログに属する単一のデータベース内でデータを分離するのは困難です。

    顧客が行き来し、一部の顧客のブログが大量のアクティビティを持ち、他の顧客が古くなると、複数のサーバーでのリバランスはさらに複雑なメンテナンス作業になります。個々のデータベースごとのサイズとアクティビティの監視も簡単です。

    同様に、データベースのバックアップまたは復元を実行します テラバイトのデータを含む単一のデータベースと、それぞれ数メガバイトの個々のデータベースのバックアップと復元は重要な要素です。考えてみてください。顧客から電話があり、データ入力が不適切なためにデータがSNAFUになっていると言われました。昨日のバックアップからデータを復元していただけませんか? 1つをどのように復元しますか すべての顧客が単一のデータベースを共有している場合の顧客のデータ?

    最終的に、彼らは顧客ごとに個別のデータベースに分割することを決定しました 、管理は複雑ですが、柔軟性が高く、ホスティングサービスをこのモデルに再構築しました。

    つまり、データモデリングから 観点からは、すべてを単一のデータベースに保持することは正しいことのように思われます。データベース管理 データ量の特定のブレークポイントを通過すると、タスクが簡単になります。



    1. MySQL:複数のテーブルの全文検索を行う方法

    2. mysqldb.escape_stringと同等のpsycopg2?

    3. PDOは、(特定のテーブル内の)データの行の削除を拒否します

    4. python mysql.connector DictCursor?