Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NoSQLデータモデリング技法#TechLunch

Livesense Inc.
April 21, 2014
100

 NoSQLデータモデリング技法#TechLunch

NoSQLデータモデリング技法
2014/01/29 (水) 12:00-13:00 @ Livesense TechLunch
発表者:佐藤 洋輔

Livesense Inc.

April 21, 2014
Tweet

More Decks by Livesense Inc.

Transcript

  1. ΞδΣϯμ •  NoSQLͷਐԽ •  NoSQLσʔλϞσϦϯάͷجຊݪଇ •  ۩ମతͳϞσϦϯάٕज़ •  ࣍ݩ࡟ݮ • 

    ෳ߹ΩʔΠϯσοΫε •  ϚςϦΞϥΠζυύε •  ωετ͞Εͨू߹ •  etc…
  2. SQL͔ΒNoSQL΁ •  SQLͱϦϨʔγϣφϧϞσϧ͸ɺϢʔβʔͱͷΠϯλϥΫγϣϯΛ૝ఆͯ͠ ࡞ΒΕ͍ͯΔ •  ूܭ͞ΕͨϨϙʔτ৘ใ •  τϥϯβΫγϣϯɺεΩʔϚɺࢀর׬શੑΛॏࢹ •  σδϚͱ͔యܕతͳΤϯυϢʔβʔ

    •  ιϑτ΢ΣΞΞϓϦέʔγϣϯ͸Ͳ͏͔ͩͬͨʁ •  ฒྻੑɺ׬શੑɺҰ؏ੑɺόϦσʔγϣϯΛॏࢹ •  ͋·ΓਓؒͷϢʔβʔ͕໌ࣔతʹ੍ޚ͕ͨ͠Δੑ࣭Ͱ͸ͳ͍ •  ্هSQLͷ௕ॴΛ੾Γࣺͯͯɺͦͷଞͷੑ࣭ʹ໨Λ޲͚ͨ͜ͱ͕ɺ৽ͨͳਐԽͷ࢝·Γ
  3. NoSQLͷϞσϧ͝ͱͷྑ͠ѱ͠ Key-Value ετΞ Ordered-Key- Value ετΞ BigTable σʔλϕʔε υΩϡϝϯτ σʔλϕʔε

    (શจݕࡧ Τϯδϯ) άϥϑ σʔλϕʔε ࠨྡ͔Βͷ վྑ఺ - Ωʔൣғͷॲ ཧ DBαΠυͰͷ ஋ͷϞσϦϯ ά (CFɺCɺTS) ೚ҙͷෳࡶ͞ ͷ εΩʔϚ σʔλϕʔε αΠυͷΠϯ σοΫε άϥϑߏ଄ ܽ఺ Ωʔൣғͷॲ ཧʹऑ͍ ૉ๿͗͢Δ Ϟσϧ ૉ๿͗͢Δ Ϟσϧ ୅ද࣮૷ Oracle Coherence Redis Kyoto Cabinet Hbase Cassandra MongoDB CouchDB Lucene Solr Neo4j FlockDB
  4. NoSQLσʔλϞσϦϯάͷجຊݪଇ •  ΞΫηεύλʔϯ͔Βͷઃܭ •  ϦϨʔγϣφϧϞσϦϯά •  ࣗ෼͸Ͳͷ౴͑Λ͍࣋ͬͯΔ͔ʁ͔Βઃܭ •  ៉ྷʹਖ਼نԽ͔ͯ͠Βνϡʔχϯά • 

    NoSQLσʔλϞσϦϯά •  ࣗ෼͸ԿΛ஌Γ͍ͨͷ͔ʁ͔Βઃܭ •  ஌Γ͍ͨ৘ใͷੑ࣭ʹΑͬͯ͸࠷ॳ͔Βσʔλෳ੡ɺඇਖ਼نԽ
  5. ྻڍՄೳͳΩʔ(Enumerable Keys) •  KeyValueετΞ࠷େͷར఺ •  γϯϓϧͳϋογϡΩʔʹΑΔߴ͍ωοτϫʔΫ෼அ଱ੑ •  εέʔϥϏϦςΟ •  ͦͷ୅ΘΓʹయܕతͳൣғݕࡧΛ͢Δ͜ͱ͕Ͱ͖ͳ͍(BETWEENతͳ)

    •  ΞτϛοΫͳΧ΢ϯλʔʹΑͬͯγʔέϯγϟϧͳIDΛੜ੒ •  AUTO_INCREMENTతͳ •  ͱ͋ΔID͔ΒɺͦͷલޙͷIDΛࢉग़ͯ͠τϥόʔε •  Ωʔ: userID_messageID •  ࠷ॳʹ༩͑ΒΕͨmessageID͔Βͷ૿ݮ •  Ωʔ: userID_date_messageID •  ೔ຖͷάϧʔϐϯά
  6. ࣍ݩ࡟ݮ(Dimensionality Reduction) •  ଟ࣍ݩσʔλΛKey-ValueͷΑ͏ͳγϯϓϧͳϞσϧʹϚοϐϯά •  ఻౷తͳ஍ܗ৘ใγεςϜ •  Quadtree •  R-Tree

    •  σʔλϘϦϡʔϜ͕ڊେͳ࣌͸ૢ࡞͕ߴͭ͘͘ •  Geohash •  Ң౓ܦ౓৘ใΛόΠφϦΤϯίʔυ •  ॱং෇͖ͷσʔλϕʔε(Ordered-KVSɺBigTable)ͱ૬ੑ͕ྑ͍ •  ۙ๣ݕࡧ
  7. ෳ߹ΩʔΠϯσοΫε(Composite Key Index) •  ॱং෇͖Ωʔ •  ΩʔͷલํҰகʹΑΔൣғεΩϟϯ •  ෳ߹ΩʔʹΑΔूܭ • 

    (ނ)cospa(HBase)Ͱ΋ ঎඼ͷεςʔλεͰ ঎඼ΛߜΓࠐΉ࣌ʹར༻͍ͯͨ͠ •  Ձ֨ΛՃ޻ͯ͠ΩʔʹೖΕͯΈͨΓ