Senna+MySQL(Tritonn)でのテーブル設計に関する質問です。


全文インデックスを使用するにはDBタイプで
MyISAMを使用しなければいけませんが、
基本的にはInnoDBを利用したいと思っています。
そこで下記の2パターンのどちらにするかで悩んでいます。

■パターン1
pageテーブル(InnoDB)
|page_id(PK)|page_title|その他カラム|

search_dataテーブル(MyISAM)
|page_id(PK)|page_contents(全文インデックス)|

■パターン2
pageテーブル(MyISAM)
|page_id(PK)|page_title|page_contents(全文インデックス)|その他カラム|

パターン1とパターン2、
それぞれのメリットについてご意見頂きたいです。
特にスケーラビリティ的な部分についても、
ご意見頂けると嬉しいです。

■パターン1のメリット
・pageテーブルのカラムについては外部キーが利用出来る。
・pageテーブルのカラムについてはトランザクションが利用出来る。

■パターン2のメリット
・パターン1と違い毎回JOINせずに済む。
・パターン1と違い片方がdeleteされた時等の操作を別途実装する必要が無い。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/07/29 18:30:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:falcon2 No.1

回答回数331ベストアンサー獲得回数2

id:FnuLnu

敢えて正規化を崩してパフォーマンスを確保する事はままありますね。ところで、パターン1とパターン2のどちらが良いと思いますか?

2008/07/25 10:35:37
  • id:FnuLnu
    目の前のケースだと、
    例で言う所のpageテーブルが、
    他エンティティとのリレーション数が多い構造なので、
    とりあえずパターン1で進める事にしました。
    (外部キーと参照操作を使いたいため)

    実際にTritonnでサービスを運用している所の話とか聞けるといいんですが。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません