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
NoSQLデータモデリング技法#TechLunch
Search
Livesense Inc.
PRO
April 21, 2014
0
110
NoSQLデータモデリング技法#TechLunch
NoSQLデータモデリング技法
2014/01/29 (水) 12:00-13:00 @ Livesense TechLunch
発表者:佐藤 洋輔
Livesense Inc.
PRO
April 21, 2014
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
2.4k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
51
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.5k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
440
26新卒_総合職採用_会社説明資料
livesense
PRO
0
11k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
37k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
13k
中途セールス職_会社説明資料
livesense
PRO
0
260
EM候補者向け転職会議説明資料
livesense
PRO
0
130
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Done Done
chrislema
185
16k
Designing for humans not robots
tammielis
253
25k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
187
55k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Git: the NoSQL Database
bkeepers
PRO
431
66k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Docker and Python
trallard
45
3.6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Transcript
Tech Lunch 2014/01/29 Yosuke Sato
None
NoSQLσʔλϞσϦϯάٕ๏ • ϒϩάهࣄ • ݪจ͕2012/03/01 • http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling- techniques/ • ༁൛͕ϗοςϯτϦͩͬͨؾ͕͢Δ
• https://gist.github.com//matope/2396234
ΞδΣϯμ • NoSQLͷਐԽ • NoSQLσʔλϞσϦϯάͷجຊݪଇ • ۩ମతͳϞσϦϯάٕज़ • ࣍ݩݮ •
ෳ߹ΩʔΠϯσοΫε • ϚςϦΞϥΠζυύε • ωετ͞Εͨू߹ • etc…
NoSQLͷਐԽ
None
SQL͔ΒNoSQL • SQLͱϦϨʔγϣφϧϞσϧɺϢʔβʔͱͷΠϯλϥΫγϣϯΛఆͯ͠ ࡞ΒΕ͍ͯΔ • ूܭ͞ΕͨϨϙʔτใ • τϥϯβΫγϣϯɺεΩʔϚɺࢀরશੑΛॏࢹ • σδϚͱ͔యܕతͳΤϯυϢʔβʔ
• ιϑτΣΞΞϓϦέʔγϣϯͲ͏͔ͩͬͨʁ • ฒྻੑɺશੑɺҰ؏ੑɺόϦσʔγϣϯΛॏࢹ • ͋·ΓਓؒͷϢʔβʔ͕໌ࣔతʹ੍ޚ͕ͨ͠Δੑ࣭Ͱͳ͍ • ্هSQLͷॴΛΓࣺͯͯɺͦͷଞͷੑ࣭ʹΛ͚ͨ͜ͱ͕ɺ৽ͨͳਐԽͷ࢝·Γ
NoSQLͷϞσϧ͝ͱͷྑ͠ѱ͠ Key-Value ετΞ Ordered-Key- Value ετΞ BigTable σʔλϕʔε υΩϡϝϯτ σʔλϕʔε
(શจݕࡧ Τϯδϯ) άϥϑ σʔλϕʔε ࠨྡ͔Βͷ վྑ - Ωʔൣғͷॲ ཧ DBαΠυͰͷ ͷϞσϦϯ ά (CFɺCɺTS) ҙͷෳࡶ͞ ͷ εΩʔϚ σʔλϕʔε αΠυͷΠϯ σοΫε άϥϑߏ ܽ Ωʔൣғͷॲ ཧʹऑ͍ ૉ͗͢Δ Ϟσϧ ૉ͗͢Δ Ϟσϧ ද࣮ Oracle Coherence Redis Kyoto Cabinet Hbase Cassandra MongoDB CouchDB Lucene Solr Neo4j FlockDB
NoSQLσʔλϞσϦϯάͷجຊݪଇ • ΞΫηεύλʔϯ͔Βͷઃܭ • ϦϨʔγϣφϧϞσϦϯά • ࣗͲͷ͑Λ͍࣋ͬͯΔ͔ʁ͔Βઃܭ • ៉ྷʹਖ਼نԽ͔ͯ͠Βνϡʔχϯά •
NoSQLσʔλϞσϦϯά • ࣗԿΛΓ͍ͨͷ͔ʁ͔Βઃܭ • Γ͍ͨใͷੑ࣭ʹΑͬͯ࠷ॳ͔Βσʔλෳɺඇਖ਼نԽ
۩ମతͳϞσϦϯάٕज़
ྻڍՄೳͳΩʔ(Enumerable Keys) • KeyValueετΞ࠷େͷར • γϯϓϧͳϋογϡΩʔʹΑΔߴ͍ωοτϫʔΫஅੑ • εέʔϥϏϦςΟ • ͦͷΘΓʹయܕతͳൣғݕࡧΛ͢Δ͜ͱ͕Ͱ͖ͳ͍(BETWEENతͳ)
• ΞτϛοΫͳΧϯλʔʹΑͬͯγʔέϯγϟϧͳIDΛੜ • AUTO_INCREMENTతͳ • ͱ͋ΔID͔ΒɺͦͷલޙͷIDΛࢉग़ͯ͠τϥόʔε • Ωʔ: userID_messageID • ࠷ॳʹ༩͑ΒΕͨmessageID͔Βͷ૿ݮ • Ωʔ: userID_date_messageID • ຖͷάϧʔϐϯά
࣍ݩݮ(Dimensionality Reduction) • ଟ࣍ݩσʔλΛKey-ValueͷΑ͏ͳγϯϓϧͳϞσϧʹϚοϐϯά • ౷తͳܗใγεςϜ • Quadtree • R-Tree
• σʔλϘϦϡʔϜ͕ڊେͳ࣌ૢ࡞͕ߴͭ͘͘ • Geohash • ҢܦใΛόΠφϦΤϯίʔυ • ॱং͖ͷσʔλϕʔε(Ordered-KVSɺBigTable)ͱ૬ੑ͕ྑ͍ • ۙݕࡧ
None
͏ΜɺΑ͘Θ͔Βͳ͍
ΠϯσοΫεςʔϒϧ(Index Table) • ʹRDB͕σϑΥϧτͰ༻ҙͯ͘͠Ε͍ͯΔΠϯσοΫε • NoSQLʹͦΕ͕ͳ͍͕࣌··͋ΔͷͰɺࣗલͰ༻ҙ • Usersςʔϒϧ͕CityଐੑΛ͍࣋ͬͯΔͱ͖ɺCitiesςʔϒϧ͕UserIDsଐੑΛͭ • ͍ΘΏΔٯҾ͖
• ύϑΥʔϚϯεϖφϧςΟ • Ұ؏ੑΛอ࣋͢ΔΈ͕ඞཁ • ϚςϦΞϥΠζυϏϡʔͷ૬ࣅܗ
ෳ߹ΩʔΠϯσοΫε(Composite Key Index) • ॱং͖Ωʔ • ΩʔͷલํҰகʹΑΔൣғεΩϟϯ • ෳ߹ΩʔʹΑΔूܭ •
(ނ)cospa(HBase)Ͱ ͷεςʔλεͰ ΛߜΓࠐΉ࣌ʹར༻͍ͯͨ͠ • Ձ֨ΛՃͯ͠ΩʔʹೖΕͯΈͨΓ
ϚςϦΞϥΠζυύε(Materialized Paths) • ߏͷ࠶ؼతͳτϥόʔεΛආ͚ΔͨΊͷςΫχοΫ • ͦΕͧΕͷϊʔυʹɺͦͷશͯͷ͔ࢠڙͷࣝผࢠΛଐੑ͚ͮΔ • τϥόʔαϧແ͠Ͱશͯͷઌ͔ࢠଙΛٻΊΔ͜ͱ͕ग़དྷΔ • IDͷηοτ͔IDΛ݁߹ͨ͠୯Ұͷจࣈྻ
• ਖ਼نදݱΛ༻͍ͯύεͷҰ෦ʹҰக͢ΔϊʔυΛݕࡧ • ϚςϦΞϥΠζυύεͱݴͬͨΒɺcospaͰkagunoͰ͓ੈʹͳ͍ͬͯΔ͜ Ε • https://github.com/stefankroes/ancestry
None
None
ωετ͞Εͨηοτ(Nested Sets) • πϦʔঢ়ͷߏମΛϞσϦϯά͢ΔͨΊͷඪ४తͳςΫχοΫ • RDBͪΖΜɺKey-ValueετΞɺυΩϡϝϯτσʔλϕʔεͳΜͰ͟͝Ε • লϝϞϦ • τϥόʔαϧͳ͠Ͱ༩͑ΒΕͨϊʔυͷશͯͷ༿ΛϑΣονग़དྷΔ
• ༿ͷՃΠϯσοΫεͷߴՁͳߋ৽Λى͜͢ͷͰɺૠೖͱߋ৽ߴίετ • ͜Εศརͳgem͕… • https://github.com/collectiveidea/awesome_nested_set
None
ଞʹ͍Ζ͍ΖͳϞσϦϯάٕज़ͳࡌ͍ͬͯ ΔͷͰ https://gist.github.com//matope/2396234
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠m(_ _)m