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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Livesense Inc.
April 21, 2014
0
130
NoSQLデータモデリング技法#TechLunch
NoSQLデータモデリング技法
2014/01/29 (水) 12:00-13:00 @ Livesense TechLunch
発表者:佐藤 洋輔
Livesense Inc.
April 21, 2014
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_総合職採用_会社説明資料
livesense
0
3.3k
27新卒_Webエンジニア職採用_会社説明資料
livesense
0
7.4k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
0
250
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
1
1.7k
データ基盤の負債解消のためのリプレイス
livesense
0
560
26新卒_総合職採用_会社説明資料
livesense
0
13k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
2
55k
26新卒_Webエンジニア職採用_会社説明資料
livesense
1
13k
中途セールス職_会社説明資料
livesense
0
300
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
140
Navigating Team Friction
lara
192
16k
New Earth Scene 8
popppiees
1
1.7k
HDC tutorial
michielstock
1
540
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
390
Optimising Largest Contentful Paint
csswizardry
37
3.6k
The Pragmatic Product Professional
lauravandoore
37
7.2k
The Invisible Side of Design
smashingmag
302
51k
Code Review Best Practice
trishagee
74
20k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
120
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
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