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
130
0
Share
NoSQLデータモデリング技法#TechLunch
NoSQLデータモデリング技法
2014/01/29 (水) 12:00-13:00 @ Livesense TechLunch
発表者:佐藤 洋輔
Livesense Inc.
PRO
April 21, 2014
More Decks by Livesense Inc.
See All by Livesense Inc.
Rubyはただの⾔語に⾮ず
livesense
PRO
0
330
28新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
86
27新卒_総合職採用_会社説明資料
livesense
PRO
0
5.3k
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
10k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
480
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
1
1.7k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
630
26新卒_総合職採用_会社説明資料
livesense
PRO
0
13k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
2
67k
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
340
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
600
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Docker and Python
trallard
47
3.9k
A Tale of Four Properties
chriscoyier
163
24k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
260
How to build a perfect <img>
jonoalderson
1
5.6k
Un-Boring Meetings
codingconduct
0
310
KATA
mclloyd
PRO
35
15k
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