MySQL は、Web サイト内の顧客リソース管理 (CRM) システムをサポートするのに非常に適しています。多くの Web サイトに不可欠な要素となっており、その価格レベルは他に類を見ません。さらに、動的な Web サイトでは、かなりの量の CRM データが検出される可能性があります。
電話会社の SAP 導入チーム管理者として働いているうちに、私は徐々にその優れた CRM ツールキットに習熟してきました。 CRM の仕事の約 90% は、ユーザーの変化する要件に対応するためのシステム構成の導入と保守であることがわかりました。 CRM 開発者は、プロセスと構造の設計に熟練している必要があります。次に、MySQL を使用してスケーラブルで高性能な CRM システムを作成するときに実行するプロセスについて説明します。
MySQL 用の CRM ソリューションの設計
CRM データベースは複雑です。ユーザー フォームは連絡先フォームにリンクされ、連絡先フォームは住所にリンクされ、組織フォームはトランザクション テーブルでリンクされ、このトランザクション テーブルはディレクトリテーブルなど。一部のリレーションシップでは、複雑な複合インデックスを作成する必要があります。他のリレーションシップの場合は、単純なインデックスのみが必要な場合もあれば、まったく必要ない場合もあります。実装における更新と削除は、カスケードされる場合とされない場合があります。
これは、MySQL で利用可能なチューニング方法に精通している必要があることを意味します。ただし、調整を行う前に、これらの調整を活用する CRM プロセスを設計する必要があります。
ロジックとデータ フロー
図 A からわかるように、MyISAM テーブルをレポート タイプ データのソースとして使用できます。 ISAM テーブルはデータベースにクエリを実行するだけの場合には非常に高速なデータ ソースであるため、これは非常に便利です。 ISAM の欠点は、テーブル ファイル自体がクラッシュする可能性があり、そのデータの更新によりそのような問題が発生しやすいことです。
図 A
CRM 設計のデータ フロー
ISAM の不安定性を解決するには、InnoDB テーブルを使用してデータ テーブル内のレコードを追加、更新、削除できます。 InnoDB エンジンはトランザクションであるため、更新が失敗すると、データは変更前の状態に戻されます。 InnoDB は参照がより完全であるため、データ更新がテーブル間の関係ルールに違反することはありません。
上のグラフに反映されていないのは、データを常にバックアップする必要があるということです。この場合、ISAM テーブルに格納されているすべてのデータが重要になります。これらのテーブルはバックアップする必要があります。 InnoDB テーブルで同じデータを取得できますが、バックアップ プロセス中のクエリには ISAM テーブルの方が適しています。
InnoDB テーブルの復元操作も同じ理由で行われます。更新により適しており (参照整合性、速度、安定性など)、保留中の追加/更新操作の同期とともに自動的に実行されます。不幸にも InnoDB テーブルがクラッシュした場合、ISAM データを使用してテーブルを再構築できるため、このようにプロセスを分割することが最善です。結局のところ、冗長性は安全性と同じです。