フラットファイルデータベースとはフラットファイル、つまりtxtやcsvなどの単一のファイルで構成されるデータベースである。データベースが使えない安価なレンタルサーバーであっても、フラットファイルによるデータ管理は行えることがある。そのため安価なレンタルサーバーでもフラットファイルデータベースを使えば会員制サイトぐらいなら作れそうである。
だがこれには当然、フラットファイルデータベースのデメリットがある。データレコードをCSVファイルで管理することを考える。つまり掲示板を作るならユーザーの会員情報や投稿データをCSVファイルに保存するというものである。フラットファイルを使った大型掲示板のロールモデルとしては2ch(現5ch)があげられるだろう。2chはデータをファイルで管理しておりフラットファイルデータベースによる作例の1つであると言える。2chは大規模な掲示板であったが、フラットファイルであってもアクセスはさばくことができたと思われるが(read.cgiなどの改善は必要であったが)、これはフラットファイルデータベースの可能性を示すものであると言える。
フラットファイルデータベースは利点も多い。それはデータがファイルなので目に見える形になっていることである。FTPソフトでデータファイルをダウンロードしてエディタで開けばデータをすぐに見ることができる。こういったお手軽さはRDBにはない魅力であると言える。
だが会員制サイトはどうだろうか。認証と認可によるシステムをフラットファイルで作るというのは、例として考えられるのはLinuxなどである。Linuxはユーザーの情報をファイルで管理しておりフラットファイルデータベースであると言える。だがLinuxの場合は何万何十万というユーザーをさばく必要はないため、パフォーマンスの面ではどうなのかはわからない。フラットファイルデータベースであっても会員制サイトは作れるだろうが、サイトのユーザーが増えた場合にパフォーマンスがどうなるか怪しいところである。
1行144文字、100万行のCSVファイルをパースすると筆者の環境では12秒かかる。これは会員情報が含まれるCSVファイルからユーザー情報を検索する場合に最悪コストが12秒ということになる。だが100万行と言うとユーザー数は100万人であり、そこまで大規模なシステムを前提とするのかという疑問は残る。つまり1万人ぐらいの規模を前提とすれば、十分フラットファイルであってもパフォーマンスは現実的なものになるだろう。
フラットファイルはトランザクション処理が難しいため、トランザクションが必要な処理は極力書かないほうにした方がいいと思われる。つまり1つのPOSTでは1つのファイルのみを更新し、関連ファイルを同時に更新しない。関連ファイルを同時に更新しようとするとトランザクションが発生し、1つ目のファイルの更新に成功して2つ目のファイルの更新に失敗した場合にデータの不整合が発生する。
2chは非常によくできたフラットファイルシステムで、長期稼働・多アクセスを実現しているが、ネット上の記事を読むとファイルロックを一切使わない設計にしているとか。2chが見本にしたあめぞうでサイトが落ちることが多くあり、それを見た運営者が考えた解決策だという。
会員制サイトの種類にもよるだろう。例えばSNSのようなコミュニケーション・サイトであれば、ユーザーの投稿数は無限に増え続ける。そのためSNSはフラットファイルシステム向きではないと言える。では掲示板はどうだろうか。掲示板であればスレッド単位でレス数を制限すれば、ファイルの増大にも対応でき、またファイルが壊れた場合の障害も分散できるメリットがある。そういった意味で、2chのシステム的にフラットファイルは適していたと言える。
つまりこのことからわかるのは、会員制サイトからデータベースを選択するのではなく、データベースから会員制サイトを選択すると言うことである。つまりフラットファイルデータベースに適した会員制サイトを選び、それを構築するのが最も適していると言える。データベースの向き不向きの問題である。
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme