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

クライアントごとの複数のデータベースと1つのデータベースの実用性

    はい、それは可能であり、私の会社はそれを行います。しかし、私は確かにそれが賢いとは言いません。 SAASマーケティング自動化システムがあります。一部のクライアントのデータベースには、100万以上のレコードがあります。私たちは、400万を超えるレコードを持つ電子メール、手紙、電話などを追跡する「フルフィルメント」テーブルと、他の多数の非常に大きな共有テーブルを備えた2番目の「共通」データベースを扱います。適切なインデックス作成、最適化、個別のDB専用サーバーの維持、および場合によってはクラスタリング(まだ行う必要はありません)を使用すると、大量のデータを処理できます......多くの場合、生計を立てるために競合する製品で動作する数十万のレコードのみを処理します。それでも有効かどうか疑問がある場合は、MySQLのクラスタリングメトリックごとに、8サーバークラスターが1秒あたり250万の更新を処理できることを考慮してください。ぼろぼろではありません.....

    2つのデータベースを使用する場合の問題は、複数の接続をジャグリングすることです。大変ですか?いいえ、そうではありません。さまざまなオブジェクトを作成し、必要なデータベースに基づいて接続クラスを参照します。この例では、メインデータベースの会社クラスにアクセスしてクライアントデータベース名を推測し、それに基づいて2番目の接続を構築します。ただし、これらの接続を前後に調整していると、追加のデバッグが必要なエラーが発生する可能性があります。 「クエリは有効ですか?」だけではありません。しかし、「私は実際に正しいデータベース接続を取得していますか?」この場合、セッションがドロップされると、システムがアクセスするクライアントデータベースを追跡できなくなるため、あらゆる種類のPDOエラーが発生する可能性があります。さらに、保守性の観点から、テーブル構造の更新を100の異なるライブデータベースにプッシュしようとするのは恐ろしいプロセスです。はい、自動化できます。しかし、1つがスリップして、多くの人をノックダウンし、自分のために大量の余分な作業を行いました。次に、接続を調整して更新をプッシュするために必要な追加の開発とテストを計算します。これは、それが価値があるかどうかの尺度になります。

    私の推薦?同じローカルネットワーク上に2台のマシンを配置できるホストを見つけます。 Linodeを選びましたが、誰を使うかは関係ありません。専用のデータベースサーバーから始めて、必要なときにクラスタリングを実行するように事前に計画します。すべてのコンテンツを1つのDBに保持し、インデックスを作成して、宗教的に最適化します。最後に、本当に良いDBの人を見つけて、彼をよく扱います。それだけのデータがあるので、優れたDBAは必須です。




    1. 行1の列'advance'のMySqlデータが切り捨てられました

    2. ミリ秒単位の日付文字列にOracleto_date関数を使用する

    3. MySQLは、別のテーブルの列の合計に基づいてフィールドを更新するようにトリガーします

    4. LaravelEloquentがnullを返すことを見つける