目次
返信内容:
ホームページ バックエンド開発 PHPチュートリアル マルチテナント CRM システムにおけるテーブルのパーティション分割の問題と、テーブルとデータの生成をトリガーする方法。

マルチテナント CRM システムにおけるテーブルのパーティション分割の問題と、テーブルとデータの生成をトリガーする方法。

Jul 06, 2016 pm 01:51 PM
mysql nginx php yii マルチテナント

当社は現在、マルチテナント型CRM管理システムを開発中です。データ量がすでに膨大であるため、最近、データベースとテーブルのシャーディングの問題を検討し始めました。
マルチテナント CRM システムの場合、現在データベースを編成する主な方法は 3 つあります。
1. 単一のデータベースは単一のテナントに排他的です。
2. 単一データベースの下の単一テナントは単一スキーマを利用します
3. 複数のテナントが単一データベースを共有します (データを区別するためにテナント ID を使用します)
さまざまな考慮事項に基づいて、現在は 2 番目の方法を採用しています。各テナントには独自のデータ テーブルのセットがあります。各テーブルのテーブル名は[テーブル名+テナントID]の形式となります。

しかし、データベースの構造が決まった後、よくわからない問題がいくつか発生しました。つまり:
1. これらのテーブルを管理する方法は? phpコードを使用して管理しますか、それともmysql側にそのようなミドルウェアがありますか?
2. 新しく登録されたテナントのデータテーブルの生成はいつトリガーされますか? (現在のトリガー位置は、新規ユーザー登録時にユーザーテーブルやメニューテーブルなどを直接生成することになっています。他の機能を使用すると、該当する関数テーブルが再度生成されます。いつもこんな感じです。方法に問題があります) 、それを処理するより良い方法はありますか?)

マルチテナント CRM システムに取り組んだことがある技術の第一人者はいますか? アドバイスをいただけますか?ありがとうございました

返信内容:

私たちの会社は現在、マルチテナントの CRM 管理システムに取り組んでいます。データ量がすでに膨大であるため、最近、データベースとテーブルのシャーディングの問題を検討し始めました。
マルチテナント CRM システムの場合、現在データベースを編成する主な方法は 3 つあります。
1. 単一のデータベースは単一のテナントに排他的です。
2. 単一データベースの下の単一テナントは単一スキーマを利用します
3. 複数のテナントが単一データベースを共有します (データを区別するためにテナント ID を使用します)
さまざまな考慮事項に基づいて、現在は 2 番目の方法を採用しています。各テナントには独自のデータ テーブルのセットがあります。各テーブルのテーブル名は[テーブル名+テナントID]の形式となります。

しかし、データベースの構造が決まった後、よくわからない問題がいくつか発生しました。つまり:
1. これらのテーブルを管理する方法は? phpコードを使用して管理しますか、それともmysql側にそのようなミドルウェアがありますか?
2. 新しく登録されたテナントのデータテーブルの生成はいつトリガーされますか? (現在のトリガー位置は、新規ユーザー登録時にユーザーテーブルやメニューテーブルなどを直接生成することになっています。他の機能を使用すると、該当する関数テーブルが再度生成されます。いつもこんな感じです。方法に問題があります) 、それを処理するより良い方法はありますか?)

マルチテナント CRM システムに取り組んだことがある技術の第一人者はいますか? アドバイスをいただけますか?ありがとうございました

私だったら、最も早く目標を達成するために、最初にスキーマを初期化するロジックを解決するソフトウェアを間違いなく使用します。ミドルウェアの利用については、今後の実情に応じて検討していきます。

初期化アクションをトリガーするタイミングについては、初期化アクションに必要なリソースと時間によって異なります。消費量が無視できる場合、新しいテナントは登録が成功した直後に初期化されます。時間がかかり、リソースを消費する場合は、cron が定期的に実行されます (ビジネスでは、登録からテナントの使用までの間隔が必要です)。登録審査)。

私の経験によれば、数十、さらには数百のテーブル (MySQL) を作成するだけでは、多くのリソースを消費しません。瞬く間に使用できるわけではありません

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP:データベースとサーバー側のロジックの処理 PHP:データベースとサーバー側のロジックの処理 Apr 15, 2025 am 12:15 AM

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPの目的:動的なWebサイトの構築 PHPの目的:動的なWebサイトの構築 Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

Nginxが起動されているかどうかを確認する方法は? Nginxが起動されているかどうかを確認する方法は? Apr 14, 2025 pm 12:48 PM

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

Linuxでnginxを開始する方法 Linuxでnginxを開始する方法 Apr 14, 2025 pm 12:51 PM

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

Dockerでミラーを作成する方法 Dockerでミラーを作成する方法 Apr 15, 2025 am 11:27 AM

Docker画像を作成する手順:ビルド命令を含むDockerFileを書きます。 Docker Buildコマンドを使用して、ターミナルで画像を作成します。画像にタグを付け、Dockerタグコマンドを使用して名前とタグを割り当てます。

Centosはmysqlをインストールします Centosはmysqlをインストールします Apr 14, 2025 pm 08:09 PM

CentOSにMySQLをインストールするには、次の手順が含まれます。適切なMySQL Yumソースの追加。 yumを実行して、mysql-serverコマンドをインストールして、mysqlサーバーをインストールします。ルートユーザーパスワードの設定など、MySQL_SECURE_INSTALLATIONコマンドを使用して、セキュリティ設定を作成します。必要に応じてMySQL構成ファイルをカスタマイズします。 MySQLパラメーターを調整し、パフォーマンスのためにデータベースを最適化します。

See all articles