いつもお世話になっております。
MySQL/MariaDBをデータベースに使用したゲームを作成しています。
質問は、データベースを効率よく使うためにテーブルをユーザーごとに分離したいが、
その場合ユーザーごとのデータベースを作るのがいいのか、
テーブルをユーザーごとに分けたほうがいいのか、です。
説明がわかりづらいと思いますが、例えば所持品などを登録する場合、
1つのテーブルで全てのユーザーの所持品を登録してしまうと、
1ユーザーで100個のアイテムを持ったとしたら100ユーザーで1万件のデータになります。
アイテムの所持数や、ユーザーが増えるごとにデータ数が膨大になっていきます。
頻繁に使うのであまり大量のデータを検索してそこでボトルネックになると困るなと思い、
ユーザーごとに分離しようと考えました。
そこで、表題に上げた2パターンの考え方ができると思うのですが、どちらがベストなのでしょう?
##データベースを追加する場合
ゲーム根幹に関わるデータをGameデータベースに保存し、
各ユーザーのデータをUser00001というデータベースを作り、IDが1のユーザーが
ログインした場合はGameとUser00001のデータベースを見に行きます。
メリット
- どのユーザーのデータか分かりやすいため、メンテナンス性に優れる。
- ユーザーごとのデータの復元などが容易。
##テーブルを追加する場合
ゲームのデータをGameデータベースに保存し、所持品(item)テーブルを
item00001というテーブルを作り、IDが1のユーザーがログインした場合は
Gameデータベースのitem00001というテーブルを見に行きます。
メリット
- データベース数が増えないため、レンタルサーバなどでも運用可能。
- 1つのデータベースをリカバリすれば全てのデータが復元する。
並べてみると各ユーザーごとにデータベースを作るほうがメリットが大きい気もしますが、
今まで複数のデータベースを1つのシステムで扱うということをしたことがないため、
このようなことをやっても大丈夫なのか、という懸念もあります。
非常に長くなってしまい申し訳ございません。読んでくださりありがとうございます。
ご回答よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー