20151205 中国地方db勉強会 dbm_fs

53
第 第第第第 12 DB 第第第 in 第第 DbmFs 第第第第 Fenrir.inc 第第 第第 @okuyamaoo [email protected]

Upload: takahiro-iwase

Post on 07-Jan-2017

340 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 20151205 中国地方db勉強会 dbm_fs

第12回 中国地方 DB 勉強会 in 出雲

DbmFs のご紹介

Fenrir.inc岩瀬 高博

@[email protected]

Page 2: 20151205 中国地方db勉強会 dbm_fs

自己紹介

・岩瀬 高博 (@okuyamaoo)・フェンリル ( 株 )  所属

・仕事と趣味

 仕事 >Web 系開発全般のプロマネ

 趣味 >OSS 開発・車の草レース

Page 3: 20151205 中国地方db勉強会 dbm_fs

本日のお話• DbmFs とは?

• 仕組みと構造

• データ構造

• 機能のご紹介

• デモ ( 時間のあるかぎり)

Page 4: 20151205 中国地方db勉強会 dbm_fs

DbmFs とは?

Page 5: 20151205 中国地方db勉強会 dbm_fs

DbmFs とは?

Page 6: 20151205 中国地方db勉強会 dbm_fs

DbmFs とは?

データベースをマウントするファイルシステム

Page 7: 20151205 中国地方db勉強会 dbm_fs

DbmFs とは?

データベースをマウントするファイルシステム

?データベースがファイルシステムをマウントするのではなく??

Page 8: 20151205 中国地方db勉強会 dbm_fs

DbmFs とは?

そもそもファイルシステムとは?

Page 9: 20151205 中国地方db勉強会 dbm_fs

DbmFs とは?

コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。

Wikipedia( ファイルシステム ) より

Page 10: 20151205 中国地方db勉強会 dbm_fs

Wikipedia( ファイルシステム ) より

Page 11: 20151205 中国地方db勉強会 dbm_fs

DbmFs とは?

身近なファイルシステムはローカルに搭載するHDD や SSD などにデータを保存している

Page 12: 20151205 中国地方db勉強会 dbm_fs

DbmFs とは?

DbmFs は保存先をデータベースにしたファイルシステム

DbmFs データベース

Page 13: 20151205 中国地方db勉強会 dbm_fs

仕組みと構造

Page 14: 20151205 中国地方db勉強会 dbm_fs

仕組みと構造

ファイルシステムを実装する

Page 15: 20151205 中国地方db勉強会 dbm_fs

仕組みと構造

ファイルシステムを実装するにはカーネルへの深い知識と

高い技術力が必要

Page 16: 20151205 中国地方db勉強会 dbm_fs

仕組みと構造

Linux 用のファイルシステム実装用の Fuse を利用

Wikipedia より

Page 17: 20151205 中国地方db勉強会 dbm_fs

仕組みと構造

ファイルシステムへの操作はFuse を経由し DbmFs へ送られる

Wikipedia より

DbmFs

データベース

DbmFs は受け取った操作命令を SQL へ変換し DB へ

Page 18: 20151205 中国地方db勉強会 dbm_fs

仕組みと構造

・実装言語

   Java + Fuse Java binding (Fuse-J)・対応環境   CentOS と RedHat の 6 系にてテスト  基本的に Fuse と Java が稼働すれば問題なし

・対応データベース   MySQL5.6 系と PostgreSQL8.4 系にてテスト

・リポジトリ – ライセンス   Version – 0.0.7 GitHub (https://github.com/okuyamaoo/DbmFs) Apache License, Version 2.0

Page 19: 20151205 中国地方db勉強会 dbm_fs

データの扱い

Page 20: 20151205 中国地方db勉強会 dbm_fs

データの扱い

DbmFs はどのようにデータベースをファイルシステムとして扱うか?

Page 21: 20151205 中国地方db勉強会 dbm_fs

データベースの構造は?

データの扱い

Page 22: 20151205 中国地方db勉強会 dbm_fs

データベースの構造は?

user_id mail zip addr tel

テーブル

データの扱い

Page 23: 20151205 中国地方db勉強会 dbm_fs

データベースの構造は?

user_id mail zip addr tel1 [email protected] 111-

2222XXX 県 11-22-3333

2 [email protected] 333-4444

YYY 市 00-11-2222

3 [email protected] 555-6666

ZZZ 町 55-44-6666

4 [email protected] 777-8888

LLLL 県 66-77-8888

レコード

テーブル

データの扱い

Page 24: 20151205 中国地方db勉強会 dbm_fs

ファイルシステムの構造は?

フォルダ

データの扱い

Page 25: 20151205 中国地方db勉強会 dbm_fs

ファイルシステムの構造は?

ファイル

データの扱い

Page 26: 20151205 中国地方db勉強会 dbm_fs

それぞれをマッピング

テーブルをフォルダへ

データの扱い

Page 27: 20151205 中国地方db勉強会 dbm_fs

それぞれをマッピング

レコードをファイルへ

データの扱い

Page 28: 20151205 中国地方db勉強会 dbm_fs

ファイルの中身は Json フォーマットでレコードを表現

[ { "user_id" : 1, "mail" : "[email protected]", "zip" : "111-2222", "addr" : "XXX 県 ", "tel" : "11-22-3333", "__DBMFS_TABLE_META_INFOMATION" : "column_name:user_id,~~~~"} ]

データの扱い

Page 29: 20151205 中国地方db勉強会 dbm_fs

機能について

Page 30: 20151205 中国地方db勉強会 dbm_fs

参照系

Page 31: 20151205 中国地方db勉強会 dbm_fs

機能

・参照系機能

 全てのテーブル、レコードをファイルシステム上で

 扱えるため Linux のコマンドで扱うことが可能

 ・ファイル名での検索

  ファイル名はテーブルの主キーの連結文字列

  主キーで検索するのであれば find コマンドで可

能[root@okuyamaoo fusemnt]# find ./user -name [1-2].json./user/1.json./user/2.json

Page 32: 20151205 中国地方db勉強会 dbm_fs

機能

・参照系機能

 全てのテーブル、レコードをファイルシステム上で

 扱えるため Linux のコマンドで扱うことが可能

 ・ファイル内容の検索

  ファイルの内容はレコーの Json 表記なので

   grep コマンドを使えば列指定で検索可能

[root@okuyamaoo fusemnt]# grep '"addr"' -r ./user/ | grep 'XXX’ ./user/1.json: "addr" : "XXX 県 ",

Page 33: 20151205 中国地方db勉強会 dbm_fs

機能

・参照系機能

  ・もちろんテキストエディタ等でも開けます[root@okuyamaoo fusemnt]# vi user/1.json [ { "user_id" : 1, "mail" : "[email protected]", "zip" : "111-2222", "addr" : "XXX 県 ", "tel" : "11-22-3333", "__DBMFS_TABLE_META_INFOMATION" : "column_name:user_id,type_name:INT,column_size:10,null_type:NO,seq_type:NO,javaTypeName:java.lang.Integer____column_name:mail,type_name:VARCHAR,column_size:255,null_type:YES,seq_type:NO,javaTypeName:java.lang.String____column_name:zip,type_name:VARCHAR,column_size:10,null_type:YES,seq_type:NO,javaTypeName:java.lang.String____column_name:addr,type_name:VARCHAR,column_size:255,null_type:YES,seq_type:NO,javaTypeName:java.lang.String____column_name:tel,type_name:VARCHAR,column_size:20,null_type:YES,seq_type:NO,javaTypeName:java.lang.String____pkey_columns_name:user_id"} ]

Page 34: 20151205 中国地方db勉強会 dbm_fs

機能

・ 0.0.7 で追加した参照機能  

Page 35: 20151205 中国地方db勉強会 dbm_fs

機能

・ 0.0.7 で追加した参照機能   > 任意の参照クエリの結果をマウントする機能

  > Readonly でのマウント

Page 36: 20151205 中国地方db勉強会 dbm_fs

機能

・ 0.0.7 で追加した参照機能   > 任意の参照クエリの結果をマウントする機能

  > Readonly でのマウント

Page 37: 20151205 中国地方db勉強会 dbm_fs

機能

・ 0.0.6 まではテーブルをマウントするだけだった

DbmFs

Page 38: 20151205 中国地方db勉強会 dbm_fs

機能

・ 0.0.7 からは SELECT クエリをマウント可能に

SELECT ・・・・ FROM ・・・・ INNDER JOIN ・・・WHERE ・・・・

SELECT クエリ

クエリ結果がフォルダに

Page 39: 20151205 中国地方db勉強会 dbm_fs

更新系

Page 40: 20151205 中国地方db勉強会 dbm_fs

機能

・更新系機能

 テキストエディタなどによるファイル更新[root@okuyamaoo fusemnt]# vi user/1.json [ { "user_id" : 1, "mail" : "[email protected]", "zip" : "111-2222", "addr" : "XXX 県 ", "tel" : "11-22-3333", "__DBMFS_TABLE_META_INFOMATION" : "column_name:user_id,type_name:INT,column_size:10,null_type:NO,seq_type:NO,javaTypeName:java.lang.Integer____column_name:mail,type_name:VARCHAR,column_size:255,null_type:YES,seq_type:NO,javaTypeName:java.lang.String____column_name:zip,type_name:VARCHAR,column_size:10,null_type:YES,seq_type:NO,javaTypeName:java.lang.String____column_name:addr,type_name:VARCHAR,column_size:255,null_type:YES,seq_type:NO,javaTypeName:java.lang.String____column_name:tel,type_name:VARCHAR,column_size:20,null_type:YES,seq_type:NO,javaTypeName:java.lang.String____pkey_columns_name:user_id"} ]

Page 41: 20151205 中国地方db勉強会 dbm_fs

機能

・更新系機能

 ファイルコピーによるデータ複製

[root@okuyamaoo fusemnt]# cp user/1.json /var/tmp

 ファイルペーストによるデータ復元、更新

[root@okuyamaoo fusemnt]# cp /var/tmp/1.json user/

 ファイルペーストによるテーブル複製

[root@okuyamaoo fusemnt]# cp /var/tmp/1.json user_tmp/

Page 42: 20151205 中国地方db勉強会 dbm_fs

機能

・更新系機能

 別 DB 間でのコピーによるデータ移行

 

mount

mountMySQL PostgreSQL

Page 43: 20151205 中国地方db勉強会 dbm_fs

機能

テーブルを異なる DB へ移行可能

テーブル定義なども全て移行されます

MySQL <-> PostgreSQL 間も可能です

 

MySQL PostgreSQL

mount

mount

Page 44: 20151205 中国地方db勉強会 dbm_fs

   デモ

Page 45: 20151205 中国地方db勉強会 dbm_fs

まとめ

・ DbmFs はファイルシステムをインターフェースとした

  DB 操作用のソフトウェア

・開発時に SQL に精通していない方による DB 操作の補助

・データバックアップやデータ移行の簡略化

・現在パスフレーズからクエリを動的に変更しデータを

 返却する仕組みを開発中

Page 46: 20151205 中国地方db勉強会 dbm_fs
Page 47: 20151205 中国地方db勉強会 dbm_fs
Page 48: 20151205 中国地方db勉強会 dbm_fs
Page 49: 20151205 中国地方db勉強会 dbm_fs
Page 50: 20151205 中国地方db勉強会 dbm_fs
Page 51: 20151205 中国地方db勉強会 dbm_fs
Page 52: 20151205 中国地方db勉強会 dbm_fs
Page 53: 20151205 中国地方db勉強会 dbm_fs

Thank you