- - PR -
MySQLデータベース設計で質問
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-03-26 12:14
MySQLで下記のようなデータを扱おうと考えています。
ユーザが各商品をチェックするとそのクリックに応じて 課金されるような仕組みとお考えください。 1) ユーザ関連情報 ・個人情報あり ・更新頻度低 2) 商品関連情報 ・更新頻度中 ・画像データあり 3) クリック課金用のログ ・ひたすらクリック情報を取得する ・更新頻度高 これらはいくつかあるテーブルを3種類に分別してみた という感じです。 古い考え方かもしれませんが、分別したデータごとに データベースを切った方がいいのかと思っております。 ですがMySQLにはスレッドという考え方がないので全く意味が ないでしょうか? DBを分けるよりは各種テーブルをMyIsamとInnoDBのどちらにするか 考えた方がパフォーマンス的にも効率がいいと思っていいもの なのでしょうか?? MySQLのデータベース設計に詳しい方どうかよろしくお願いします。 | ||||||||||||
|
投稿日時: 2007-03-26 15:04
別にMySQLは詳しくはないですが・・・。
データの分類毎にストレージを使い分ける手法はよく使います。 例えば、更新頻度やアクセス頻度に応じて物理ディスクを使い分けたり、 パーティショニングをサポートするDBMSならば、テーブルを分割して 利用頻度の低い過去データを通常は参照しないようにするなどです。 MySQLにはその辺の機能はないので自力で実装になっちゃいますけど。
DBMSでのスレッドって何のことですか?
MyISAMとInnoDBの使い分けは、トランザクションの必要性や、 障害時のリカバリの重要性の方が大きいのではないでしょうか。 MyISAMはその辺りを犠牲にして時間的性能を稼いでいます。 | ||||||||||||
|
投稿日時: 2007-03-26 15:27
使用頻度という軸と、
TransactionテーブルとMasterテーブルってきり方がありますね。 最近だと、個人情報保護法案のおかげで、 個人を一意に識別するデータを別DBに分けるとかって考え方も存在します。 | ||||||||||||
|
投稿日時: 2007-03-26 15:56
早々のご回答ありがとうございます。
なるほど、MySQLの機能で何か実装するというよりアプリで制御 するか物理的にDBのロケーションを変えるしかないようですね。
失礼しました。Oracleでいうインスタンスのイメージでした。
将来的にはAPI開放も考えているので、分けた方がよさそうですね。 とりあえず3つにDBを切ってみようかと思います。 ありがとうございました。 | ||||||||||||
|
投稿日時: 2007-03-26 16:27
MySQLの「データベース」は、他のデータベースで言うところの「スキーマ」に近いです。
なので、複数のデータベースオブジェクトを論理的にひとまとめにする目的に使えるのですが、分割にどのような効果を求めるのかによって是非は変わります。 パフォーマンスという意味では別に分けてもしょうがないはずですし、セキュリティという意味では、同一データベース内の全オブジェクトのアクセス権限を一括管理できるので、便利かもしれません。テーブル単位でもできますが。 |
1