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
36
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
13
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.4k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
390
26新卒_総合職採用_会社説明資料
livesense
PRO
0
8.7k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
27k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
12k
中途セールス職_会社説明資料
livesense
PRO
0
250
EM候補者向け転職会議説明資料
livesense
PRO
0
120
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
Making Projects Easy
brettharned
116
6.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
What's in a price? How to price your products and services
michaelherold
246
12k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Become a Pro
speakerdeck
PRO
28
5.4k
Balancing Empowerment & Direction
lara
1
380
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
GitHub's CSS Performance
jonrohan
1031
460k
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