SlideShare a Scribd company logo
1 of 53
第12回 中国地方DB勉強会 in 出雲
DbmFsのご紹介
Fenrir.inc
岩瀬 高博
@okuyamaoo
ta.okuyamaoo@gmail.com
自己紹介
・岩瀬 高博(@okuyamaoo)
・フェンリル (株) 所属
・仕事と趣味
仕事>Web系開発全般のプロマネ
趣味>OSS開発・車の草レース
本日のお話
• DbmFsとは?
• 仕組みと構造
• データ構造
• 機能のご紹介
• デモ(時間のあるかぎり)
DbmFsとは?
DbmFsとは?
DbmFsとは?
データベースをマウントするファイルシステム
DbmFsとは?
データベースをマウントするファイルシステム
?
データベースがファイルシステムをマウントするのではなく??
DbmFsとは?
そもそもファイルシステムとは?
DbmFsとは?
コンピュータのリソースを操作するための、
オペレーティングシステム (OS) が持つ機能の一つ。
Wikipedia(ファイルシステム)より
Wikipedia(ファイルシステム)より
DbmFsとは?
身近なファイルシステムはローカルに搭載する
HDDやSSDなどにデータを保存している
DbmFsとは?
DbmFsは保存先をデータベースにしたファイルシステム
DbmFs データベース
仕組みと構造
仕組みと構造
ファイルシステムを実装する
仕組みと構造
ファイルシステムを実装するにはカーネルへの
深い知識と
高い技術力が必要
仕組みと構造
Linux用のファイルシステム実装用のFuseを利用
Wikipediaより
仕組みと構造
ファイルシステムへの操作は
Fuseを経由しDbmFsへ送られる
Wikipediaより
DbmFs
データベース
DbmFsは受け取った操作
命令をSQLへ変換しDBへ
仕組みと構造
・実装言語
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
データの扱い
データの扱い
DbmFsはどのようにデータベースを
ファイルシステムとして扱うか?
データベースの構造は?
データの扱い
データベースの構造は?
user_id mail zip addr tel
テーブル
データの扱い
データベースの構造は?
user_id mail zip addr tel
1 aaaa@bb.cc 111-
2222
XXX県 11-22-3333
2 bbbb@bb.cc 333-
4444
YYY市 00-11-2222
3 cccc@bb.cc 555-
6666
ZZZ町 55-44-6666
4 dddd@bb.cc 777-
8888
LLLL県 66-77-8888
レコード
テーブル
データの扱い
ファイルシステムの構造は?
フォルダ
データの扱い
ファイルシステムの構造は?
ファイル
データの扱い
それぞれをマッピング
テーブルをフォルダへ
データの扱い
それぞれをマッピング
レコードをファイルへ
データの扱い
ファイルの中身はJsonフォーマットでレコードを表現
[ {
"user_id" : 1,
"mail" : "aaa@bb.cc",
"zip" : "111-2222",
"addr" : "XXX県",
"tel" : "11-22-3333",
"__DBMFS_TABLE_META_INFOMATION" : "column_name:user_id,~~~~"
} ]
データの扱い
機能について
参照系
機能
・参照系機能
全てのテーブル、レコードをファイルシステム上で
扱えるためLinuxのコマンドで扱うことが可能
・ファイル名での検索
ファイル名はテーブルの主キーの連結文字列
主キーで検索するのであれば find コマンドで可能
[root@okuyamaoo fusemnt]# find ./user -name [1-2].json
./user/1.json
./user/2.json
機能
・参照系機能
全てのテーブル、レコードをファイルシステム上で
扱えるためLinuxのコマンドで扱うことが可能
・ファイル内容の検索
ファイルの内容はレコーのJson表記なので
grepコマンドを使えば列指定で検索可能
[root@okuyamaoo fusemnt]# grep '"addr"' -r ./user/ | grep 'XXX’
./user/1.json: "addr" : "XXX県",
機能
・参照系機能
・もちろんテキストエディタ等でも開けます
[root@okuyamaoo fusemnt]# vi user/1.json
[ {
"user_id" : 1,
"mail" : "aaa@bb.cc",
"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.I
nteger____column_name:mail,type_name:VARCHAR,column_size:255,null_type:YES,seq_type:NO,javaTypeN
ame:java.lang.String____column_name:zip,type_name:VARCHAR,column_size:10,null_type:YES,seq_type:N
O,javaTypeName:java.lang.String____column_name:addr,type_name:VARCHAR,column_size:255,null_type:Y
ES,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"
} ]
機能
・0.0.7で追加した参照機能
機能
・0.0.7で追加した参照機能
> 任意の参照クエリの結果をマウントする機能
> Readonlyでのマウント
機能
・0.0.7で追加した参照機能
> 任意の参照クエリの結果をマウントする機能
> Readonlyでのマウント
機能
・0.0.6まではテーブルをマウントするだけだった
DbmFs
機能
・0.0.7からはSELECTクエリをマウント可能に
SELECT ・・・・
FROM ・・・・INNDER JOIN ・・・
WHERE ・・・・
SELECTクエリ
クエリ結果がフォルダに
更新系
機能
・更新系機能
テキストエディタなどによるファイル更新
[root@okuyamaoo fusemnt]# vi user/1.json
[ {
"user_id" : 1,
"mail" : "aaa@bb.cc",
"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.I
nteger____column_name:mail,type_name:VARCHAR,column_size:255,null_type:YES,seq_type:NO,javaTypeN
ame:java.lang.String____column_name:zip,type_name:VARCHAR,column_size:10,null_type:YES,seq_type:N
O,javaTypeName:java.lang.String____column_name:addr,type_name:VARCHAR,column_size:255,null_type:Y
ES,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"
} ]
機能
・更新系機能
ファイルコピーによるデータ複製
[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/
機能
・更新系機能
別DB間でのコピーによるデータ移行
mount mount
MySQL PostgreSQL
機能
テーブルを異なるDBへ移行可能
テーブル定義なども全て移行されます
MySQL <-> PostgreSQL間も可能です
MySQL PostgreSQL
mount mount
デモ
まとめ
・DbmFsはファイルシステムをインターフェースとした
DB操作用のソフトウェア
・開発時にSQLに精通していない方によるDB操作の補助
・データバックアップやデータ移行の簡略化
・現在パスフレーズからクエリを動的に変更しデータを
返却する仕組みを開発中
Thank you

More Related Content

What's hot

データベース技術の羅針盤
データベース技術の羅針盤データベース技術の羅針盤
データベース技術の羅針盤
Yoshinori Matsunobu
 
地方における勉強会事情
地方における勉強会事情地方における勉強会事情
地方における勉強会事情
Soudai Sone
 

What's hot (20)

PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化について
 
今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL
 
職場で使用しているOSSの開発に参加してみた!
職場で使用しているOSSの開発に参加してみた!職場で使用しているOSSの開発に参加してみた!
職場で使用しているOSSの開発に参加してみた!
 
利益はデータベースの中にあった!
利益はデータベースの中にあった!利益はデータベースの中にあった!
利益はデータベースの中にあった!
 
サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごと
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosql
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
 
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
 
レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦レガシーな環境からモダンへの挑戦
レガシーな環境からモダンへの挑戦
 
大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
 
株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料
 
データベース技術の羅針盤
データベース技術の羅針盤データベース技術の羅針盤
データベース技術の羅針盤
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
地方における勉強会事情
地方における勉強会事情地方における勉強会事情
地方における勉強会事情
 
ソーシャルゲーム開発における運用とそのツール
ソーシャルゲーム開発における運用とそのツールソーシャルゲーム開発における運用とそのツール
ソーシャルゲーム開発における運用とそのツール
 
知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能
 
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
 
Oratopostgres-hiroshima
Oratopostgres-hiroshimaOratopostgres-hiroshima
Oratopostgres-hiroshima
 
I pv6 studygroup20121103
I pv6 studygroup20121103I pv6 studygroup20121103
I pv6 studygroup20121103
 

Viewers also liked

Viewers also liked (20)

オープンデータ超入門
オープンデータ超入門オープンデータ超入門
オープンデータ超入門
 
意外と知らないFilemakerの世界
意外と知らないFilemakerの世界意外と知らないFilemakerの世界
意外と知らないFilemakerの世界
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-kly
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
 
Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131
 
Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方
 
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
DynamoDB   MyNA・JPUG合同DB勉強会 in 東京DynamoDB   MyNA・JPUG合同DB勉強会 in 東京
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
 
Viewを使って開発を楽にする話
Viewを使って開発を楽にする話Viewを使って開発を楽にする話
Viewを使って開発を楽にする話
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
 
中国地方Db勉強会
中国地方Db勉強会中国地方Db勉強会
中国地方Db勉強会
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
 
InnoDB Table Compression
InnoDB Table CompressionInnoDB Table Compression
InnoDB Table Compression
 
意外と知らないFilemakerの世界
意外と知らないFilemakerの世界意外と知らないFilemakerの世界
意外と知らないFilemakerの世界
 
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeMyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
 
Amazon Redshiftを使ったデータ分析
Amazon Redshiftを使ったデータ分析Amazon Redshiftを使ったデータ分析
Amazon Redshiftを使ったデータ分析
 
20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
 
Chugokudb18_2
Chugokudb18_2Chugokudb18_2
Chugokudb18_2
 
20150920 中国地方db勉強会
20150920 中国地方db勉強会20150920 中国地方db勉強会
20150920 中国地方db勉強会
 
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQLMySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
 

Similar to 20151205 中国地方db勉強会 dbm_fs

20140418 info talkセミナー資料
20140418 info talkセミナー資料20140418 info talkセミナー資料
20140418 info talkセミナー資料
Takahiro Iwase
 
C32 DB Performance on Cloud by 安藤賀章
C32 DB Performance on Cloud by 安藤賀章C32 DB Performance on Cloud by 安藤賀章
C32 DB Performance on Cloud by 安藤賀章
Insight Technology, Inc.
 
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
Insight Technology, Inc.
 

Similar to 20151205 中国地方db勉強会 dbm_fs (20)

20131113_mysql_on_分散fsセミナー資料
20131113_mysql_on_分散fsセミナー資料20131113_mysql_on_分散fsセミナー資料
20131113_mysql_on_分散fsセミナー資料
 
20140418 info talkセミナー資料
20140418 info talkセミナー資料20140418 info talkセミナー資料
20140418 info talkセミナー資料
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
 
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
 
プログラムの大海に溺れないために
プログラムの大海に溺れないためにプログラムの大海に溺れないために
プログラムの大海に溺れないために
 
Let's join in OpsWorks world!
Let's join in OpsWorks world!Let's join in OpsWorks world!
Let's join in OpsWorks world!
 
C32 DB Performance on Cloud by 安藤賀章
C32 DB Performance on Cloud by 安藤賀章C32 DB Performance on Cloud by 安藤賀章
C32 DB Performance on Cloud by 安藤賀章
 
DBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォームDBREから始めるデータベースプラットフォーム
DBREから始めるデータベースプラットフォーム
 
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
 
Parsing xml with lxml
Parsing xml with lxmlParsing xml with lxml
Parsing xml with lxml
 
Mongo db勉強会
Mongo db勉強会Mongo db勉強会
Mongo db勉強会
 
福岡データベース勉強会 2016春: CakeSchemaとbaserCMS
福岡データベース勉強会 2016春: CakeSchemaとbaserCMS福岡データベース勉強会 2016春: CakeSchemaとbaserCMS
福岡データベース勉強会 2016春: CakeSchemaとbaserCMS
 
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
 
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!
 
B 2-1 はじめての Windows Azure
B 2-1 はじめての Windows AzureB 2-1 はじめての Windows Azure
B 2-1 はじめての Windows Azure
 
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
 
baserCMSの今
baserCMSの今baserCMSの今
baserCMSの今
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
AWSerにも知ってほしいDBの話
AWSerにも知ってほしいDBの話AWSerにも知ってほしいDBの話
AWSerにも知ってほしいDBの話
 
データベースの使い分けを考える
データベースの使い分けを考えるデータベースの使い分けを考える
データベースの使い分けを考える
 

More from Takahiro Iwase

20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料
Takahiro Iwase
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
Takahiro Iwase
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会
Takahiro Iwase
 
okuyama_20101101_nosqlafternoon
okuyama_20101101_nosqlafternoonokuyama_20101101_nosqlafternoon
okuyama_20101101_nosqlafternoon
Takahiro Iwase
 

More from Takahiro Iwase (12)

Re port aws_reinvent_161213_slideshare
Re port aws_reinvent_161213_slideshareRe port aws_reinvent_161213_slideshare
Re port aws_reinvent_161213_slideshare
 
20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料
 
20120913 nosql@hikarie(okuyama fuse)
20120913 nosql@hikarie(okuyama fuse)20120913 nosql@hikarie(okuyama fuse)
20120913 nosql@hikarie(okuyama fuse)
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸
 
Okuyama説明資料 20120119 ss
Okuyama説明資料 20120119 ssOkuyama説明資料 20120119 ss
Okuyama説明資料 20120119 ss
 
Kvs okuyama-20110818
Kvs okuyama-20110818Kvs okuyama-20110818
Kvs okuyama-20110818
 
20110708 dist_study okuyama
20110708 dist_study okuyama20110708 dist_study okuyama
20110708 dist_study okuyama
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会
 
okuyama_20101101_nosqlafternoon
okuyama_20101101_nosqlafternoonokuyama_20101101_nosqlafternoon
okuyama_20101101_nosqlafternoon
 
2010/07/09 osc kansai-kvsokuyama
2010/07/09 osc kansai-kvsokuyama2010/07/09 osc kansai-kvsokuyama
2010/07/09 osc kansai-kvsokuyama
 

20151205 中国地方db勉強会 dbm_fs