web-dev-qa-db-ja.com

データベースを操作する良い習慣

私はDrupalを学んでおり、データベースが主なものであるWebサイトを開発したいと考えています。

私はすでにデータベースの拡張エンティティ関係モデルを持っています(一種の複雑な)。

Drupalが使用するデータベースを作成するときの正しい方向性は何ですか手動で作成し、Drupalでクエリを実行します) MySQLのサイトは最初からですか?Drupalはこれを行う簡単な方法を提供していますか?

編集
私はDrupal経験豊富な開発者ではありません。知りたいのは:

  • データベースを操作するとき、PHP + MySQLの単一ページを開発している場合のように、SQL構文を使用してデータベースをクエリするより良い方法はありますか?

Drupal開発者がデータベースを作成したり、データを挿入したり、データを変更したり、クエリを実行してユーザーにデータを表示したりするときに通常行うことを知りたいだけです。

5
Oscar Mederos

エンティティ関係モデルは、Drupalで「コンテンツタイプ」と呼ばれるものにマッピングされる可能性があります。

コンテンツタイプは、一般的にCCKと呼ばれるコンテンツ構築キットモジュールを使用して定義されます。

CCKでは、ポイントアンドクリックして、コンテンツタイプに含めるフィールドを定義します-テキストフィールド、数値、リンク、他のコンテンツタイプへの参照、Drupalサイト内のユーザーへの参照。

コンテンツタイプを定義すると、そのコンテンツにどのような種類のリスト(表形式、ブログスタイルなど)が必要かを把握し、Viewsモジュールを使用してそのリストを作成できます。ビューは、並べ替え、フィルタリング、アクセス制御、動的URL引数、および他のコンテンツタイプとの関係(結合と考える)を備えた、ポイントアンドクリックのクエリビルダーです。

これは通常、Drupal-で「データベース」が実行される方法ですが、実際にはデータベースに対して何もする必要はありません。

7000のいくつかの組み合わせでは解決できない本当に具体的なユースケースがある場合、Drupalモジュールの場合、 'Pro = Drupal開発 'とモジュール開発を学び、カスタムモジュールを残りのDrupal=に統合して、正確なニーズを満たすことができます。

10
Darren Petersen

私の最初の反応は、これはあまりにも基本的な質問である可能性があるということですが、Drupal他のもののほとんどは、モジュールを介して利用でき、わずかなPHP/SQLを書くだけで済みます。

したがって、Drupalのモジュールを構築しているのでない限り、通常、基礎となるデータベースやその動作方法について何も知る必要はありません。

Drupalを使用すると、コンテンツタイプ、ノード、モジュールビュー、およびCCKを操作して、サイトから必要なほとんどの機能を構築できます。これらのモジュールは、プラグインの完全なドロップではなく、ビルディングブロックですあまりよく設計されていないシステムで見られたように、シングルを実行します。DrupalはCMSであると考えてください。コーディングが多すぎない標準フレームワークに似ています。

コアといくつかの適切に選択されたモジュールを使用するだけで、ほとんどの場合、機能の0〜95%を非常にすばやく取得できます。

4

免責事項:私はDrupal開発者ではありません

MySQLを使用するときはいつでも、サイトが使用すると予想されるストレージの量を計画する必要があります。

MySQL DBAとしての個人的な経験から、いくつかの基本原則を念頭に置いて、Drupalインストールと最適化されたクエリをクリーンアップしました。

すべてのDrupal顧客は すべてのMySQLデータをINNODBに変換 します。これにより、特に 高トラフィックサイトでのテーブルロックが排除されます。 。必ずinnodb_file_per_tableオプションを使用してください。

すべてのInnoDBデータをキャッシュできることを確認する必要があります。したがって、それに対応するのに十分なメモリを用意してください。 sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_sizeを調整し、max_connectionsでそれらの合計を乗算することを忘れないでください。 MySQLによって消費される合計メモリ(innodb_buffer_pool_size + key_buffer_size +(sort_buffer_size + join_buffer_size + read_buffer_size + read_rnd_buffer_size)X max_connections)が、インストールされているRAMの90%を超えないことを確認してください。

DBレイヤーを確認することは常に良い習慣です。これらの提案を実装したら、データまたは接続が大幅に増加したときに、DBレイヤーのメンテナンスを検討する必要があります。それ以外の場合は、まれにしか発生しません。

2
RolandoMySQLDBA

一般ユーザーがいる場合、あなたがすることはinstall.phpを介してサイトをインストールすることだけであり、データベースについて知っておく必要があるのは名前、ユーザー、パスワードだけですDrupal残りの面倒を見てください。

ユーザーとしてなんらかの形式のクエリを実行する必要がある場合は、 Views モジュールを使用しますが、データベースについて何も知る必要はありません。

開発者がカスタムコードまたはcontribモジュールを作成していて、データベースに情報を格納する必要がある場合は、いくつかのクエリを作成する必要があり、他のクエリはDrupal関数で対処できます。

  • 最初にデータベースを設定する場合は hook_schema() を使用します。この場合、必要な形式でスキーマを返すだけです。

  • 単一のテーブルでレコードを書き込み/更新するためのベストプラクティスアプローチは、 drupal_write_record() を利用することです。

次の場所に多くの読み物があります: http://api.drupal.org/api/drupal/includes--database--database.inc/group/database/7

また、ドキュメントはバージョンに固有であることに注意してください。

これがあなたの質問に多少答えることを願っています。

1
Decipher