/tips/other/database_pattern **時系列レコード管理 ”(日々の売上や仕入などのような)時系列に大量発生するデータ”をデータベースで管理するためのパターンです。データベースの肥大化による検索性能の劣化を防ぎつつ、大量のデータを保管することが可能です。また、永続的な保管にCSV形式を利用するため、他システム(例えばExcel)とのデータ共有も容易であるというメリットがあります。
***用語 ,アーカイブ,CSVデータを保管するためのフォルダです。 ,テーブル,データが格納されるテーブルです。 ,集計用テーブル,テーブルのデータを加工したデータが格納されるテーブルです。
***流れ {strong:1.外部データ(CSV)の収集} FTPやSMBでフォルダを公開し、定められた位置にファイルを受け取ることができるようにします(こちらからファイルを取りにいく方法も考えられます)。図中では、「storage/import/」というフォルダに「xxx.csv」を毎日受信し、「xxx」という名前のテーブルにデータを保管する状況を想定しています。
{strong:2.アーカイブのインポート} 取得した外部データをデータベースに取り込む(インポートする)前に、同じキーを持つデータをアーカイブから検索し、存在すればそのデータを先にインポートします。次のステップで(外部データを優先した状態で)既存のデータとマージするための準備になります。
{strong:3.外部データのインポート} 取得した外部データをデータベースにインポートします。後述するインポータ(Importer)によって、既に同一キーのデータが存在する場合は、上書き更新がなされ、そうでない場合は追加処理が行われます。
{strong:4.アーカイブへのエクスポート} ここまでのステップでテーブル内に最新のデータが完成しています。この時点で、テーブル内のデータを一旦、CSV形式でアーカイブに出力します。
(以下執筆中) {strong:5.集計用テーブルへの展開} {strong:6.テーブルのクリア} {strong:7.集計用テーブルのクリア}
${image:20070618database.gif}
***インポータについて
- タグ別一覧: [database_pattern]
- チップス一覧
この記事は役に立ちましたか?
- EnglishWorm.com
- SinglesFan.com
- LmLab.net
- サイトマップ
- 運営者について