Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LevelDB入門
Search
Yosuke Furukawa
PRO
June 27, 2014
Programming
10
12k
LevelDB入門
InfluxDB勉強会用資料
Yosuke Furukawa
PRO
June 27, 2014
Tweet
Share
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
3.6k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
180
Removing Corepack
yosuke_furukawa
PRO
9
1.4k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.6k
Strip Types と Storage
yosuke_furukawa
PRO
4
360
Module Harmony について
yosuke_furukawa
PRO
3
1.6k
LTのやり方
yosuke_furukawa
PRO
16
2.3k
AppRouter Panel Talk
yosuke_furukawa
PRO
3
740
Node.js v22 で変わること
yosuke_furukawa
PRO
13
5.6k
Other Decks in Programming
See All in Programming
Alba: Why, How and What's So Interesting
okuramasafumi
0
210
令和7年版 あなたが使ってよいフロントエンド機能とは
mugi_uno
10
5.1k
混沌とした例外処理とエラー監視に秩序をもたらす
morihirok
13
2.2k
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
180
Fixstars高速化コンテスト2024準優勝解法
eijirou
0
190
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
540
ATDDで素早く安定した デリバリを実現しよう!
tonnsama
1
1.8k
Оптимизируем производительность блока Казначейство
lamodatech
0
950
ドメインイベント増えすぎ問題
h0r15h0
2
560
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.4k
Package Traits
ikesyo
1
210
Simple組み合わせ村から大都会Railsにやってきた俺は / Coming to Rails from the Simple
moznion
3
2.1k
Featured
See All Featured
How GitHub (no longer) Works
holman
312
140k
KATA
mclloyd
29
14k
jQuery: Nuts, Bolts and Bling
dougneiner
62
7.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
A Tale of Four Properties
chriscoyier
157
23k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
210
4 Signs Your Business is Dying
shpigford
182
22k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
How to Ace a Technical Interview
jacobian
276
23k
Transcript
LevelDBೖ @yosuke_furukawa
@yosuke_furukawa Node.jsϢʔβʔάϧʔϓද / DeNAॴଐ
None
None
LevelDBೖهࣄॻ͖·ͨ͠
ࠓͦΕͷ͓͞Β͍ + InfluxDB x LevelDBͷ
LevelDBͱ?
GoogleͷBigTableΛϕʔεʹ͠ ͯ։ൃ͞ΕͨܰྔͷKey-Valueܕ σʔλετΞ
༻్ΉͬͪΌ͍
LevelDBಛ
LevelDBಛ • σʔλkeyͰιʔτ͞Εͯ֨ೲ͞ΕΔ • جຊతͳૢ࡞ Put(key, value), Get(key), Delete(key)Ͱ ͋Γɺγϯϓϧɻ
• ෳͷมߋΛatomicͳॲཧʹ͢Δ͜ͱ͕Ͱ͖Δ • consistentͳσʔλͷviewΛಘΔͨΊ(ॻ͖ࠐΈதͰ readͰ͖ΔΑ͏ʹ͢ΔͨΊ)ʹtransient ͳ snapshotΛ࡞ Δ͜ͱ͕Ͱ͖Δ
Architecture
None
8SJUF࣌ʹ-PH 4PSUFE 5BCMF'JMFTʹॻ͘ 3FBE࣌ʹ$BDIF -PH 4PSUFE5BCMF'JMF͔ ΒಡΈࠐΉ
4PSUFE5BCMF
LevelDBཧղͷҰ൪ͷ؊ Sorted String Table
Sorted String Table LFZ P⒎TFU BBB CCC DDD
JOEFY 445 BBB CCC IPHFGVHBʜ DDD ʜ
Sorted String Table LFZ P⒎TFU BBB CCC DDD
JOEFY 445 BBB CCC IPHFGVHBʜ DDD ʜ LFZͰTPSU͞Ε͓ͯΓɺ JOEFYʹϑΝΠϧͷͲ͔͜ΒಡΈࠐ Ή͔ P⒎TFU ͕ॻ͍ͯ͋Δ LFZWBMVFͷॱংͰҰଓ͖Ͱ ϑΝΠϧʹॻ͔ΕΔ
-FWFM -FWFM -FWFM Sorted String Table 445 445 445 445
445 445 445 445 445 445 445 445 445 445
-FWFM -FWFM -FWFM Sorted String Table 445 445 445 445
445 445 445 445 445 445 445 445 445 445 -FWFM%#Ͱ͜ͷ445Λ ֊Խ ͕͜͜-FWFM%#ͷ༝དྷ ͯ͠ཧ͍ͯ͠Δɻ -FWFM͕ਂ͘ͳΕͳΔ΄Ͳ ཧ͢Δ༰ྔ͕૿͑Δ -FWFMͰ.# -FWFMͰ.# -FWFMͰ(# ͱେମഒִؒͰ૿͑ͯ͘
-FWFM -FWFM -FWFM Sorted String Table 445 445 445 445
445 445 445 445 445 445 445 445 445 445 ͜͏͢Δ͜ͱͰԿ͕خ͍͔͠ ֊͕ए͍-FWFM༰ྔগ ͳ͘ɺJOEFYͷ࠶࡞ίετ͕ ͍ɻ JOTFSU͕සग़͢ΔΑ͏ͳ໘Ͱ XSJUFͷੑೳΛޮԽͰ͖Δ
String Sorted Table ઌ΄Ͳͷུ֓ਤΛ445ͷͱ͜ Ζ͚ͩৄࡉʹ͢Δͱ ͜Μͳײ͡ʹͳΔɻ
Put/Get/Deleteͷࡉ͔͍ಈ͖
Put -FWFM NFNUBCMF NFNUBCMFTOBQTIPU 1VU DPQZ MPH EVNQUPEJTL 445 -FWFM
.# 445 445 445 ʜ -FWFM .# 445 445 445 ʜ
Put -FWFM NFNUBCMF NFNUBCMFTOBQTIPU 1VU DPQZ MPH EVNQUPEJTL 445 -FWFM
.# 445 445 445 ʜ -FWFM .# 445 445 445 ʜ શͯͷߋ৽ॲཧҰ୴ .FNUBCMFͱ-PHʹॻ͘
Put -FWFM NFNUBCMF NFNUBCMFTOBQTIPU 1VU DPQZ MPH EVNQUPEJTL 445 -FWFM
.# 445 445 445 ʜ -FWFM .# 445 445 445 ʜ Ұఆྔஷ·Δͱ 4OBQTIPUΛ࡞ͬͯɺ 445ʹEVNQ͢Δ
Put -FWFM NFNUBCMF NFNUBCMFTOBQTIPU 1VU DPQZ MPH EVNQUPEJTL 445 -FWFM
.# 445 445 445 ʜ -FWFM .# 445 445 445 ʜ -FWFM͕ҰഋʹͳͬͨΒ -FWFMʹҠಈͤ͞Δ
Get -FWFM NFNUBCMF (FU MPH 4FBSDI 445 -FWFM .# 445
445 445 ʜ -FWFM .# 445 445 445 ʜ #MPPN'JMUFS -FWFMʹ͋ΔՄೳ ੑ͕͋Δ 4LJQ 4FBSDI 4LJQ
Get -FWFM NFNUBCMF (FU MPH 4FBSDI 445 -FWFM .# 445
445 445 ʜ -FWFM .# 445 445 445 ʜ #MPPN'JMUFS -FWFMʹ͋ΔՄೳ ੑ͕͋Δ 4LJQ 4FBSDI 4LJQ NFNUBCMF -FWFM -FWFM -FWFMͱݟ͍ͯͬͯώοτ ͨ͠Βฦ͢ɻ
Get -FWFM NFNUBCMF (FU MPH 4FBSDI 445 -FWFM .# 445
445 445 ʜ -FWFM .# 445 445 445 ʜ #MPPN'JMUFS -FWFMʹ͋ΔՄೳ ੑ͕͋Δ 4LJQ 4FBSDI 4LJQ ແବͳ୳ࡧͷࢬמΓΛ͢Δͨ Ίʹ#MPPN'JMUFSʹΑͬͯଘࡏ ͢Δ͔Ͳ͏͔Λ֬ೝ͢Δ
Delete -FWFM %FMFUF NFSHF MPH 445 -FWFM .# 445 445
445 ʜ -FWFM .# 445 445 445 ʜ EFMFUFqBH LFZ WBMVF EFMFUFE BCD EFG HIJ EFMFUFqBH LFZ WBMVF EFG HIJ
Delete -FWFM %FMFUF NFSHF MPH 445 -FWFM .# 445 445
445 ʜ -FWFM .# 445 445 445 ʜ EFMFUFqBH LFZ WBMVF EFMFUFE BCD EFG HIJ EFMFUFqBH LFZ WBMVF EFG HIJ جຊతʹEFMFUFqBHΛ͚Δ ͚ͩͷཧআ
Delete -FWFM %FMFUF NFSHF MPH 445 -FWFM .# 445 445
445 ʜ -FWFM .# 445 445 445 ʜ EFMFUFqBH LFZ WBMVF EFMFUFE BCD EFG HIJ EFMFUFqBH LFZ WBMVF EFG HIJ -FWFMΛ·͙ͨຖʹ࣮ࡍʹ EFMFUF͢Δ
Delete -FWFM %FMFUF NFSHF MPH 445 -FWFM .# 445 445
445 ʜ -FWFM .# 445 445 445 ʜ EFMFUFqBH LFZ WBMVF EFMFUFE BCD EFG HIJ EFMFUFqBH LFZ WBMVF EFG HIJ ͜͏͢Δ͜ͱͰEFMFUF࣌ͷ JOEFY࠶࡞ίετΛݮΒͯ͠ ͍Δ
LevelDB Performance
IUUQMFWFMECHPPHMFDPEFDPNHJUIJTUPSZNBTUFSEPDCFODINBSLIUNM
IUUQMFWFMECHPPHMFDPEFDPNHJUIJTUPSZNBTUFSEPDCFODINBSLIUNM 3BOEPN3FBETେࠩͳ͍
IUUQMFWFMECHPPHMFDPEFDPNHJUIJTUPSZNBTUFSEPDCFODINBSLIUNM 4FRVFOUJBM3FBET 8SJUFॲ ཧ-FWFM%#͕ߴ
LevelDB x InfluxDB
LevelDB x InfluxDB ෦తʹLFZʹUJNFTUBNQ͕ͨ͘Ί-FWFM%#෦Ͱ࣌ܥྻॱ ͱͳΓɺ ࠷ద͔ͱ͔͘ 4FRVFOUJBM3FBE͔ͭ8SJUF͕සൃ͢ Δ*OqVY%#͖ͩͱݸਓతʹࢥ͏ɻ
InfluxDB x **DB
InfluxDB x **DB %#ϨΠϠʔΛநԽɺ-FWFM%#Ҏ֎ σʔλετΞͱͯ͑͠ΔΑ͏ʹͳͬͨɻ IUUQJOqVYECDPNCMPHMFWFMEC@WT@SPDLTEC@WT@IZQFSMFWFMEC@WT@MNEC@QFSGPSNBODFIUNM
InfluxDB x **DB ͪͳΈʹ͜ͷද͔Β3PDLT%#͕ྑͦ͞͏ʹݟ͑Δ͕ɺɺɺ
InfluxDB x **DB 5IF3PDLT%# QFSGPSNBODFJT BNB[JOHMZQPPS IUUQTHJTUHJUIVCDPNIZDFBBCFGC -.%#ͷ࡞ऀ͕ଌఆ͠ͳ͓ͨ͠Β-.%#࠷ڧʹͳͬͨΓͱ ڥʹΑͬͯҟͳΔ༷ࢠɻ
InfluxDB x **DB -.%#࡞ऀ͕ܭଌ͠ͳ͓ͨ͠Βܶతʹվળ͞ΕͯͨΓɺ IBSEXBSFʹΑͬͯมΘΔͷͰɺࣈͯʹ͠ͳ͍΄͏͕͍͍͔ʜ
·ͱΊ • LevelDBͱ • Architecture • Performance • LevelDB x
InfluxDB • InfluxDB x **DB
ࢀߟ • https://www.igvita.com/2012/02/06/ sstable-and-log-structured-storage- leveldb/ • http://yosuke-furukawa.hatenablog.com/ entry/2014/05/05/095207 • https://speakerdeck.com/smly/influxdb-
and-leveldb-inside-out