Submit Search
Upload
Level dbを試した
•
0 likes
•
1,361 views
T
takayuki kochi
Follow
Level DB @ Mishima.syk#7
Read less
Read more
Health & Medicine
Report
Share
Report
Share
1 of 22
Download now
Download to read offline
Recommended
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
Koichi Fujikawa
Tokyo Webmining #12 Hapyrus
Tokyo Webmining #12 Hapyrus
Koichi Fujikawa
JSONBはPostgreSQL9.5でいかに改善されたのか
JSONBはPostgreSQL9.5でいかに改善されたのか
NTT DATA OSS Professional Services
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
Kohei KaiGai
[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方
Kosuke Kida
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS
Kohei KaiGai
20181031 springfest spring data geode
20181031 springfest spring data geode
Masaki Yamakawa
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
Kohei KaiGai
Recommended
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
Koichi Fujikawa
Tokyo Webmining #12 Hapyrus
Tokyo Webmining #12 Hapyrus
Koichi Fujikawa
JSONBはPostgreSQL9.5でいかに改善されたのか
JSONBはPostgreSQL9.5でいかに改善されたのか
NTT DATA OSS Professional Services
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
Kohei KaiGai
[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方
Kosuke Kida
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS
Kohei KaiGai
20181031 springfest spring data geode
20181031 springfest spring data geode
Masaki Yamakawa
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
Kohei KaiGai
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
Ryousuke Wayama
pg_trgmと全文検索
pg_trgmと全文検索
NTT DATA OSS Professional Services
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
Kohei KaiGai
PGCon.jp 2014 jsonb-datatype-20141205
PGCon.jp 2014 jsonb-datatype-20141205
Toshi Harada
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
Makoto Yui
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
Kohei KaiGai
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
MongoDB3.2の紹介
MongoDB3.2の紹介
Tetsutaro Watanabe
20180914 GTCJ INCEPTION HeteroDB
20180914 GTCJ INCEPTION HeteroDB
Kohei KaiGai
Shibuya Perl Mongers#12 No Sql Couch Db
Shibuya Perl Mongers#12 No Sql Couch Db
Makoto Ohnami
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
Insight Technology, Inc.
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
Kohei KaiGai
Re:dash Use Cases at iPROS
Re:dash Use Cases at iPROS
Jumpei Yokota
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解する
Takahiro Inoue
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
Toshi Harada
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
Kohei KaiGai
Chugokudb study-20150131
Chugokudb study-20150131
Toshi Harada
Datomic&datalog紹介
Datomic&datalog紹介
あしたのオープンソース研究所
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
TiDBのトランザクション
TiDBのトランザクション
Akio Mitobe
More Related Content
What's hot
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
Ryousuke Wayama
pg_trgmと全文検索
pg_trgmと全文検索
NTT DATA OSS Professional Services
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
Kohei KaiGai
PGCon.jp 2014 jsonb-datatype-20141205
PGCon.jp 2014 jsonb-datatype-20141205
Toshi Harada
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
Makoto Yui
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
Kohei KaiGai
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
MongoDB3.2の紹介
MongoDB3.2の紹介
Tetsutaro Watanabe
20180914 GTCJ INCEPTION HeteroDB
20180914 GTCJ INCEPTION HeteroDB
Kohei KaiGai
Shibuya Perl Mongers#12 No Sql Couch Db
Shibuya Perl Mongers#12 No Sql Couch Db
Makoto Ohnami
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
Insight Technology, Inc.
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
Kohei KaiGai
Re:dash Use Cases at iPROS
Re:dash Use Cases at iPROS
Jumpei Yokota
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解する
Takahiro Inoue
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
Toshi Harada
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
Shinsuke Sugaya
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
Kohei KaiGai
Chugokudb study-20150131
Chugokudb study-20150131
Toshi Harada
Datomic&datalog紹介
Datomic&datalog紹介
あしたのオープンソース研究所
What's hot
(20)
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
Geotiff.jsで始めるリアルタイム演算 in foss4g japan 2020 online
pg_trgmと全文検索
pg_trgmと全文検索
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
PGCon.jp 2014 jsonb-datatype-20141205
PGCon.jp 2014 jsonb-datatype-20141205
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
MongoDB3.2の紹介
MongoDB3.2の紹介
20180914 GTCJ INCEPTION HeteroDB
20180914 GTCJ INCEPTION HeteroDB
Shibuya Perl Mongers#12 No Sql Couch Db
Shibuya Perl Mongers#12 No Sql Couch Db
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
[db tech showcase Tokyo 2017] B35: 地図用データを高速処理!オープンソースGPUデータベースMapDの魅力に迫る!!by...
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
Re:dash Use Cases at iPROS
Re:dash Use Cases at iPROS
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解する
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
LastaFluteでKotlinをはじめよう
LastaFluteでKotlinをはじめよう
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
Chugokudb study-20150131
Chugokudb study-20150131
Datomic&datalog紹介
Datomic&datalog紹介
Similar to Level dbを試した
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
TiDBのトランザクション
TiDBのトランザクション
Akio Mitobe
巨大なサービスと膨大なデータを支えるプラットフォーム
巨大なサービスと膨大なデータを支えるプラットフォーム
Tetsutaro Watanabe
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
Insight Technology, Inc.
ビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分け
Tetsutaro Watanabe
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
Ryoma Nagata
Db2 & Db2 Warehouse v11.5.4 最新情報アップデート2020年8月25日
Db2 & Db2 Warehouse v11.5.4 最新情報アップデート2020年8月25日
IBM Analytics Japan
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
Kazuki Taniguchi
ビッグデータ処理データベースの全体像と使い分け 2018年version
ビッグデータ処理データベースの全体像と使い分け 2018年version
Tetsutaro Watanabe
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!
Takahiro Inoue
第一回IoT関連技術勉強会 分散処理編
第一回IoT関連技術勉強会 分散処理編
tzm_freedom
リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例
Tetsutaro Watanabe
20191115-PGconf.Japan
20191115-PGconf.Japan
Kohei KaiGai
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
Recruit Technologies
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
Recruit Technologies
Dat009 クラウドでビック
Dat009 クラウドでビック
Tech Summit 2016
そのデータ、活かせていますか?
そのデータ、活かせていますか?
Miho Yamamoto
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
Recruit Technologies
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
Similar to Level dbを試した
(20)
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
TiDBのトランザクション
TiDBのトランザクション
巨大なサービスと膨大なデータを支えるプラットフォーム
巨大なサービスと膨大なデータを支えるプラットフォーム
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
ビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分け
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
Db2 & Db2 Warehouse v11.5.4 最新情報アップデート2020年8月25日
Db2 & Db2 Warehouse v11.5.4 最新情報アップデート2020年8月25日
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
QConTokyo2015「Sparkを用いたビッグデータ解析 〜後編〜」
ビッグデータ処理データベースの全体像と使い分け 2018年version
ビッグデータ処理データベースの全体像と使い分け 2018年version
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Treasure Data Intro for Data Enthusiast!!
Treasure Data Intro for Data Enthusiast!!
第一回IoT関連技術勉強会 分散処理編
第一回IoT関連技術勉強会 分散処理編
リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例
20191115-PGconf.Japan
20191115-PGconf.Japan
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
Dat009 クラウドでビック
Dat009 クラウドでビック
そのデータ、活かせていますか?
そのデータ、活かせていますか?
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Level dbを試した
1.
LevelDBでお気軽永続化、 RDKitオブジェクトを突っ込む @tkochi0603 Mishima.syk #7 2015.12.12
2.
自己紹介 • 前、某H社(IT会社)のSE • 顧客:Bioinfo研究者 •
今、某製薬会社のIT屋(2年半前転職) • ケモ関連のシステム構築+データ処理+α
3.
ビッグデータ!
4.
ビッグデータ解析したい から計算機出してよー
5.
• 実際の所、 • 社外のスパコン活用しつつも、社内のデータ解析用 の計算資源がイマイチなので本格的なのはいつにな ることやら。 •
おねだりしても買ってくれないし、データの増大と 計算機増設はイタチごっこだし、計算機や解析ソフ トに頼るだけでなく、あるものを工夫してITスキル 上げていきたい
6.
• 今日の話 • Level
DBでお気軽永続化、RDKitオブ ジェクトを突っ込む • おまけ numpy
7.
• Level DBでお気軽永続化、RDKitオブ ジェクトを突っ込む KVS(キーバリューストア) ≒Perlのハッシュ、Pythonの Dict、みたいなもの プログラム実行中に生成したオブ ジェクトをファイルに書き出して、 別のプログラムが再利用できるよ うにすること 化合物データ処理用のライブラリ(python)
8.
http://yosuke-furukawa.hatenablog.com/entry/2014/05/05/095207
9.
Use case • 市販化合物ライブラリから選ぶ作業とか、 ライブラリ間の比較とか、大き目のデータ セットの読み込みを試行錯誤するケース
10.
1000万化合物の処理 @PP 約10時間 フィルターかけたりク ラスタリングしたりで、 何度も繰り返す → 数日作業 ファイルやDBからの読み込みと、 化合物構造のチェック処理に時間がかかる ⇧の対策
11.
やったこと ・Linux(Ubuntu)にLevelDBをインストール ・RDKitのインストール ・PythonからLevelDBを操作できるplyvelをインストール ( RDKitやplyvelはAnaconda経由でインストール ) ・比較のため、Tokyo
Cabinet(とpytc)も入れた
12.
SDF キー バリュー 1001 Molオブジェクト 1002
Molオブジェクト 1003 Molオブジェクト 1004 Molオブジェクト ID-001 9 9 0 0 0 0 0 0 0 0999 V2000 -1.4265 0.0021 0.0000 C 0 0 0 0 0 0 -1.4265 -0.8229 0.0000 C 0 0 0 0 0 0 -0.7120 -1.2354 0.0000 N 0 0 0 0 0 0 0.0025 -0.8229 0.0000 C 0 0 0 0 0 0 0.0025 0.0021 0.0000 C 0 0 0 0 0 0 -0.7120 0.4146 0.0000 C 0 0 0 0 0 0 0.7145 0.4132 0.0000 C 0 0 0 0 0 0 1.4265 0.0021 0.0000 O 0 0 0 0 0 0 0.7145 1.2354 0.0000 O 0 0 0 0 0 0 1 2 2 0 2 3 1 0 3 4 2 0 4 5 1 0 5 6 2 0 6 1 1 0 5 7 1 0 7 8 1 0 7 9 2 0 M END > <Name> D-Alaninol > <Mol Wt> 123 $$$$ ID-002 1化合物 構造情報 属性情報 化合物ファイル 1化合物 構造情報 属性情報 Python LevelDBに、オブジェクトを突っ込む LevelDB これを再利用 1化合物を Molオブジェクト
13.
#!/usr/bin/python from rdkit import
Chem from rdkit.Chem import AllChem from rdkit.Chem import Descriptors from rdkit.Chem.PropertyMol import PropertyMol import plyvel import sys import os import cPickle as pickle # --------------------------------------- if __name__ == "__main__": ldb = plyvel.DB( './ldbs/test100K.ldb', create_if_missing=True) inpFile = open( './sdf/test100K.sdf', 'r' ) for mol in Chem.ForwardSDMolSupplier( inpFile, True, True, False ): if not mol is None: try: id = mol.GetProp( '_Name' ) pmol = PropertyMol( mol ) ldb.put( id, pickle.dumps( pmol ) ) except Exception as e: sys.stderr.write( "ERROR : " + e.message + "n" ) inpFile.close() ldb.close() molをpickleすると構造情報だけ出 力される。PropertyMolでラップす ることで属性情報も出力される LevelDBへは、put で入れる LevelDBの出来上がり
14.
DB作成 化合物数 SDF ファイル サイズ LEVEL DB 作成時間 TOKYO CABINET(HASH) 作成時間 100K 250MB 132MB (112
files) 2m20s 503MB 2m23s 1M 2.5GB 1.3GB (846 files) 24m 4.9GB 27m 10M 27GB 14GB (7991files) 4h21m 54GB 13h12m Core i7-4790K 4GHz / Mem 32GB * swap 多発 snappyによる圧縮効果が大きいようだ
15.
読み込み時間 化合物数 PP KVS使わず、 SDFから直接 LEVEL DB TOKYO CABINET(HAS H) 100K
資料間に合わず 40s 21s 21s 1M 資料間に合わず 6m42s 3m30s 3m36s 10M 10h 79m 40m 資料間に合わず Core i7-4790K 4GHz / Mem 32GB PPと比べると速さ15倍 KVSを使わないよりも2倍。また、メモリ使用量も大幅削減
16.
• プログラム(Python)を書けるようになれば、大規模デー タも処理できるようになる。(Pilot scriptからの卒業) •
(注意点)LevelDBは1つのProcessからのみ。同時に他の Processから使えないのが残念→その点では TokyoCabinetの方が良い
17.
おまけ:numpy
18.
S K 数万化合物を総当たりで Similarityを計算したいけど、 Out of
Memoryになるんです…
19.
S K A B
C D A ? ? ? ? B ? ? ? ? C ? ? ? ? D ? ? ? ? A 構造 像B 構造 C 構造 D 構造 A 構造 像B 構造 C 構造 D 構造 X 結果は、numpyの二次元配列に入れ て、データ型を工夫するといいよ
20.
numpyを使う NUMPY データ型 計算時間
使用メモリ 使わない float64 52s 4.8GB 使う float64 38s 861MB 使う float16 39s 288MB 10,000 vs 10,000 similarity ECFP4 tanimoto * swap 多発 PP 7h50s [memory use]
21.
#!/usr/bin/python from rdkit import
Chem from rdkit import DataStructs from rdkit.Chem import AllChem from rdkit.Chem import Descriptors from rdkit.Chem.PropertyMol import PropertyMol import numpy as np import pandas as pd import plyvel import sys import os import cPickle as pickle # --------------------------------------- def calc(): fps = [] ldb = plyvel.DB('./ldbs/test100K.ldb') for key, val in ldb: pmol = pickle.loads(val) fps.append( AllChem.GetMorganFingerprintAsBitVect( pmol,2) ) ldb.close() res = np.zeros( [ 100000,100000 ], dtype='float16' ) for ( ia, fp ) in enumerate( fps ): res[ia] = DataStructs.BulkTanimotoSimilarity(fp, fps) df = pd.DataFrame( res ) print df # --------------------------------------- if __name__ == "__main__": calc() NxNの計算プログラム ( numpy )
22.
# -------------------------------------- # Anaconda install # wgetのアドレスは本家サイトで確認すること # -------------------------------------- wget https://3230d63b5fc54e62148e- c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com/Anaconda2-2.4.0- Linux-x86_64.sh conda create -c https://conda.anaconda.org/rdkit -n my-rdkit-env rdkit source activate my-rdkit-env # -------------------------------------- # level db # -------------------------------------- sudo apt-get install libsnappy-dev wget https://leveldb.googlecode.com/files/leveldb-1.15.0.tar.gz tar -xzf leveldb-1.9.0.tar.gz cd leveldb-1.9.0 make sudo mv libleveldb.* /usr/local/lib cd include sudo cp -R leveldb /usr/local/include sudo ldconfig # -------------------------------------- # plyvel # -------------------------------------- pip install plyvel ubuntuへのインストール
Download now