by shigemk2

当面は技術的なことしか書かない

あなたにも作れるファイルシステム まとめ #fdev_shimane

fenrir.doorkeeper.jp

@okuyamaoo データベースをファイルシステムとして使うDbmFsの紹介 OSS活動は好き ウェブ共同開発部所属 Web計全般の開発運営

  • DbmFsってなに
  • 仕組みと構造
  • 機能

  • DbmFsってなに

DbmFsってなに

github.com

  • データを保存管理するのがデータベース
  • WinだとExplorer MacだとFinderみたいなのがファイルシステム
  • データベースのデータはファイルなので、ファイルシステムの一種ともいえる

  • ファイルシステムの構造

  • フォルダ(ディレクトリ)をつくる

  • テーブルをフォルダにマッピングする

  • テーブルはフォルダに似ており、関連するものを入れる

  • レコードは、ファイルに似ている

  • データをJSONに変換

  • データベースをファイルシステムとして使うシステム

  • データベースの構造とレコードをファイルシステムのファイルとフォルダにマッピングしている

仕組みと構造

  • JSONデータをいじったら、DBのデータも変わるようにしたい
  • Linux用のファイルシステム実装用のFuseを利用
  • (いろいろなファイルシステムがあるなかで)命令を投げてデータを受け取る
  • ファイルシステムを自前で組むときに、FUSEがないと難易度がかなり上がる

FUSE: Filesystem in Userspace

実装言語など

  • Java + Fuse Java binding(Fuse-J)
  • CentOS RedHatでテスト(FuseとJavaが問題ない奴)
  • MySQL 5.6 PostgreSQL 8.4
  • Apache License 2.0

機能 参照系

  • SQLを投げるかMySQL WorkBenchとかを使うとか
  • マウントしているサーバの中に入ってLinux系のコマンドを使えば、DBに接続しなくてもいいしツールも使わなくてもいい
  • ので、テキストエディタでデータを見ることができる

  • SQL文を実行したほうが効率がいいパターンも多い(100万レコードとか…)

機能 更新系

  • テキストエディタなどによるファイル更新
  • データの複製はdumpコマンドではなく、cpコマンドでいける!
  • ファイルペーストによるデータ複製
  • ファイルペーストによるテーブル複製
  • 別のDB間によるデータ移行もコマンドやD&Dで簡単に出来る

  • テーブル定義も移行可能

  • MySQL PostgreSQL間でのデータ移行も可能。

どのように使うか 開発作業時

  • データ確認を簡単に
  • DbmFsでマウントしたディレクトリをSambaで公開(誰でもテキストエディタで簡単にデータを確認できる)
  • viewdir
  • テスト等で一時的にデータを書き換えたいとき(再帰テストなど)
  • テスト時のデータを一時的に退避したり復元したりするのが楽

どのように使うか 運用時

  • 簡単な管理画面を簡略化(ちょっとした機能ですら作るのに工数とお金がかかる)

まとめ

  • DbmFSはSQLコマンドに明るくないひとでもデータを簡単に扱えるようにするやつ
  • 今後参照系も強化
  • WebAPIを作りたい
  • RDBMSだけではなくNoSQLも対応していきたい(ビッグデータへの対応など)