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
100
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.
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
770
26新卒_総合職採用_会社説明資料
livesense
PRO
0
1.4k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
8.8k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
5k
中途セールス職_会社説明資料
livesense
PRO
0
140
EM候補者向け転職会議説明資料
livesense
PRO
0
58
コロナで失われたノベルティ作成ノウハウを復活させた話
livesense
PRO
0
180
転職会議でGPT-3を活用した企業口コミ要約機能をリリースした話
livesense
PRO
0
1.2k
株式会社リブセンス マッハバイト_プレイブック
livesense
PRO
0
720
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Gamification - CAS2011
davidbonilla
80
5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
900
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Facilitating Awesome Meetings
lara
50
6.1k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
The Cult of Friendly URLs
andyhume
78
6k
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