Slide 1

Slide 1 text

σʔλϕʔεͷ͸ͳ͠ Basho Japan KK Kota UENISHI 2014/1/31

Slide 2

Slide 2 text

ͲͪΒ༷Ͱ͔͢ʁ •  @kuenishi •  NTTݚڀॴ ˠ Basho •  Erlang/OTPΛॻ͍ͯ࢓ࣄΛ͍ͯ͠·͢ •  ෼ࢄσʔλϕʔεɾ෼ࢄγεςϜͷ঎༻։ൃྺ 6೥ •  ϛυϧ΢ΣΞతͳ΋ͷ͕ൺֱతಘҙͰ͢

Slide 3

Slide 3 text

•  Riakͱ͍͏OSSͷ෼ࢄσʔλϕʔε Λ࡞ͬͯച͍ͬͯ·͢ •  Riak CSͱ͍͏OSSͷΫϥ΢υετ ϨʔδΛ࡞ͬͯଧ͍ͬͯ·͢ •  ʮ෼ࢄਥʯΧϯϑΝϨϯεRicon.io •  Basho.com 3

Slide 4

Slide 4 text

͖͔͚ͬ 4 தུ ʮ಺༰ͱͯ͠͸riakͱ ɹNoSQLΛؚΊͯ ɹ௖͚ͨΒʯ

Slide 5

Slide 5 text

ࠓ೔͓΅͑ͯ΋Β͏͜ͱ •  NoSQL͸όζϫʔυͰ͋Γɺఆٛ͸ͳ͍ •  ͍Ζ͍ΖͳσʔλετΞͱͦͷ෼ྨɺ࢖͍෼͚ͷίπ •  ෼ࢄγεςϜ΍σʔλϕʔεपลͷ໰୊ɺ၆ᛌਤ •  Riak͸ૉ੖Β͍͠σʔλϕʔεͰ͋Δ

Slide 6

Slide 6 text

ͦ΋ͦ΋ σʔλϕʔεͱ͸Կʁ •  ΞϓϦέʔγϣϯͷσʔλΛίϯϐϡʔλʹอଘ͢Δ ͨΊͷιϑτ΢ΣΞʢϥΠϒϥϦ or αʔόʔʣ 6 01010110100001001011 11001010101010100101 01001010101001010100 10101010010111111110 00000101111100101010 00000010010101001001 01001010010010100

Slide 7

Slide 7 text

อଘ͢Δͱ͖ͷཁٻ •  σʔλΛਖ਼͘͠ॻ͖ࠐΉ͜ͱɺσʔλͷߋ৽͕த్൒ ୺ͳঢ়ଶͰࣦഊ͠ͳ͍͜ͱ •  ॻ͖ࠐΜͩσʔλΛਖ਼͘͠ಡΈग़͢͜ͱ •  ॻ͖ࠐΜͩσʔλΛผܗࣜʹม׵ͯ͠ಡΈͩ͢͜ͱ •  ϋʔυ΢ΣΞੑೳͷݶք·Ͱߴ଎ʹอଘ͢Δ͜ͱ •  ϋʔυ΢ΣΞੑೳͷݶք·Ͱߴ଎ʹಡΈग़͢͜ͱ •  σʔλ͕ফ͑Δ৚͕݅ਖ਼֬ʹ൑໌͍ͯ͠Δ͜ͱ 7

Slide 8

Slide 8 text

ྺ্࢙ͷσʔλϕʔε •  IDS (GE, 1963) •  ֊૚ܕDB •  IMS (IBM, 1966 -), •  ωοτϫʔΫܕDB •  CODASYL (1969, COBOL), •  ࠓ΋ಈ͍͍ͯΔ੡඼΋͋Δ 8

Slide 9

Slide 9 text

1977೥ System R (IBM) •  ؔ܎୅਺ͷཧ࿦ʹج͍ͮͨσʔλૢ࡞ݴޠ SQLΛ࣮૷ͨ͠ੈքॳͷσʔλϕʔε •  Ұ؏ͨ͠σʔλʹର͢Δෳ਺ͷૢ࡞Λશͯ ੒ޭɾશࣦͯഊʹ·ͱΊɺෳ਺ͷߋ৽ཁٻ Λฒߦ੍ޚ͠ɺσʔλΛӬଓԽ͢Δτϥϯ βΫγϣϯॲཧΛ࣮૷ͨ͠ੈքॳͷσʔλ ϕʔε •  ۀ຿ॲཧͷϞσϧʹඇৗʹΑ͘Ϛονͨ͠ ͨΊɺരൃతʹීٴɹˠISOͰඪ४Խ •  1983೥ Oracle v3 •  1987೥ Sybase SQL Server (ݱMicrosoft SQL Server) 9

Slide 10

Slide 10 text

͸͡Ί͔ΒSQLͩͬͨΘ͚Ͱ΋ϦϨʔγϣφϧ ͩͬͨΘ͚Ͱ΋ͳ͍ ͭ·Γ… 10

Slide 11

Slide 11 text

RDBMSͷ࣌୅ •  ACIDಛੑʹج͍ͮͨτϥϯβΫγϣϯ؅ཧ •  SQLͱ͍͏౷Ұ͞ΕͨΠϯλʔϑΣʔε •  ੈքதͷΤϯλʔϓϥΠζͷσʔλ؅ཧ͸ΦϑΟεͷOA ԽɾγεςϜͷΦʔϓϯԽʹ൐͍RDBMS͕ओྲྀʹ •  εέʔϧΞοϓͷ࣌୅Ͱ΋͋Δ •  1995೥ͷHDDͷGB୯Ձ: ~7.5ສԁ/ GB 11

Slide 12

Slide 12 text

•  2003೥ʙɹITόϒϧ่յޙ •  Ոఉ༻ίϯϐϡʔλɺϒϩʔυόϯυͷීٴ •  Web 2.0ɺϒϩάɺWikipediaɺEϝʔϧɺWebݕࡧɺEC •  1998೥ Google૑ۀ •  1995೥ Amazon૑ۀ •  “Web Scale” ͷσʔλྔ 12 Webͷ࣌୅

Slide 13

Slide 13 text

•  ٻΊΒΕΔ͜ͱ͕มԽ: ߏ଄͸؆୯Ͱ΋ɺྔ΍τϥ ϑΟοΫɺϨεϙϯεɺՄ༻ੑͳͲͷཁٻ͕ଟ༷ Խɾߴ౓Խ •  σʔλͷ୯Ձ͕͍҆etc •  RDBMSͰ͸ղܾͰ͖ͳ͍Φʔμʔ·Ͱσʔλྔ͕ ૿Ճ͢ΔʹैͬͯɺͦΕΛղܾ͢Δٕज़͕ొ৔ •  ؔ܎ϞσϧɺSQLͰ͸ѻ͍ʹ͍͘σʔλϞσϧʢ୯ ७͕ͩΑ͘มԽ͢Δσʔλߏ଄ʣ •  2003೥ͷHDDͷGB୯Ձ: 100ԁ / GBɹ(120GB) 13 “Web Scale”

Slide 14

Slide 14 text

Web Scale΁ͷΞϓϩʔν •  Ոఉ༻ίϯϐϡʔλͱಉ͡HW •  LAMP + Memcached(2003) •  Redis (2009) •  Google: GFS(2003), BigTable(2006) •  Hadoop (2006), HBase (2006) •  Amazon: Dynamo(2006) •  Cassandra (2008), Riak (2009) 14

Slide 15

Slide 15 text

ຊ౰ʹղ͖͍ͨ໰୊ 15

Slide 16

Slide 16 text

εέʔϦϯάͷ໰୊ 16

Slide 17

Slide 17 text

εέʔϦϯάͷํ๏ •  ෳ਺୆ͷϊʔυʹσʔλΛ෼ࢄอ࣋ͯ͠ྔΛՔ͙ •  ʮͲͷσʔλ͕Ͳͷαʔόʔʹೖ͍ͬͯΔ͔ʁʯ 17

Slide 18

Slide 18 text

18

Slide 19

Slide 19 text

ϋογϡతϧʔςΟϯά •  Riak, Cassie, DynamoͳͲ •  Կ͕Ͳ͜ʹ͋Δ͔ Θ͔Γʹ͍͘ •  εέʔϧΞ΢τɺ ෛՙ෼ࢄ͕؆୯ 19 node1 node2 node3 node4

Slide 20

Slide 20 text

“ϋογϡత” •  ΩʔͱϊʔυIDΛϋογϡԽͯ͠ಉ໊͡લۭؒʹஔ͘ •  ϋογϡͷ୯ҐͰσʔλΛ෼ׂͯ͠഑ஔ •  ϊʔυ௥Ճɾ࡟আͷͱ͖ͷσʔλ࠶഑ஔΛ࠷খݶʹͰ ͖Δ 20 {foo, SomeData}! Hash(foo)%N! Hash(node1)%N!

Slide 21

Slide 21 text

21 Locality vs Load Balancing - Use Cases • ઌಡΈΛޮ͔ͤͯόϧΫͰγʔέϯγϟϧΞ Ϋηε • - HBase, BigTable, etc • ϋογϡͰ෼ࢄͤͯ͞ෛՙ෼ࢄͯ͠ϥϯμϜ ΞΫηε • - Riak, Cassie, etc

Slide 22

Slide 22 text

੔߹ੑͷ໰୊ 22

Slide 23

Slide 23 text

Q. ੔߹ੑͬͯͳΜͩͱ ͓΋͍·͔͢ʁ 23

Slide 24

Slide 24 text

੔߹ੑʹ͸2ͭͷจ຺͕͋Δ •  ڞ௨͢Δͷ͸ʮ୭͕ݟͯ΋ಉ͡Α͏ʹݟ͑Δ͜ͱʯ •  ෳ਺छྨͷσʔλؒͷInvariant͕कΒΕ͍ͯΔ͜ͱ •  “ACID” తͳAnomaly͕ൃੜ͠ͳ͍͜ͱ •  Phantom Read, Write Skew, etc etc… •  ෳ਺ͷσʔλͷίϐʔ͕ಉ͡Ͱ͋Δ͜ͱ •  ෳ਺ͷίϐʔΛ҆શʹߋ৽Ͱ͖Δ͜ͱ •  ผʑͷਓͰ΋ಉ͡σʔλΛݟΕ͍ͯΔ͜ͱ

Slide 25

Slide 25 text

25 Consistent Replication is Difficult • ϨϓϦέʔγϣϯ͸ॱ൪͕ೖΕସΘΔ • CPUͷΞ΢τΦϒΦʔμʔ࣮ߦͱಉ͡ w1 w1 w1 w2 w2 w2 Actor 0 Actor 1 Actor 2 w2 w2 w1

Slide 26

Slide 26 text

෼ࢄ߹ҙ໰୊ •  ʮෳ੡͕͢΂ͯಉ͡Ͱ͋Δʯ •  ʹʮશһ͕ͻͱͭͷ஋ʹ߹ҙͰ͖͍ͯΔঢ়ଶʯ •  ΞϠγ͍ಈ࡞Λ͢ΔՄೳੑ͕͋Δ΋ͷ •  ωοτϫʔΫ •  ߹ҙ͢Δ૬ख •  ੍ݶ࣌ؒɿແݶ 26

Slide 27

Slide 27 text

·͡Ίʹॻ͘ͱ… •  ͍ͭͰ΋յΕΔՄೳੑͷ͋Δෳ਺ͷϊʔυ͕ɺ •  յΕͯ·ͨ෮ؼ͢ΔՄೳੑ΋͋Δ •  ฦࣄ͕஗͍͚ͩͷ৔߹΋ •  ৴པੑͷ௿͍ϊʔυؒ௨৴Λ࢖ͬͯ •  ΋ͷ͘͢͝஗Ԇ͍ͯ͠Δ͚Ͳ࣮͸ಧ͘ •  ͻͱͭͷ஋Λ߹ҙ͢ΔʢͷʹͲͷΑ͏ͳ৚݅ͱϓϩτ ίϧ͕͋Ε͹Α͍͔ʁʣ 27

Slide 28

Slide 28 text

ͳͥ೉͍͠ͷ͔ •  ࢮ׆؂ࢹ͕೉͍͠ •  ϦʔμʔΛఘΊΔɺϚελʔΛఘΊΔɺetc •  ࢳి࿩Ͱࢮ׆؂ࢹ͢Δ࿅श •  ނোϞσϧͷ͸ͳ͕͍͠Ζ͍Ζ͋Δ 28

Slide 29

Slide 29 text

ࢮ׆؂ࢹ͸೉͍͠ •  ʮࢮΜͩ͜ͱʯΛਖ਼͘͠ݟ͚ͭΔͷ͸೉͍͠ •  ࣮ݧʢ͕࣌ؒ͋Ε͹ʣ 29

Slide 30

Slide 30 text

ʮࢮΜͰ͍Δʯ is Կ 30 © ʮ๺ేͷݓʯݪ఩෉ɺ෢࿦ଚ

Slide 31

Slide 31 text

ނোతࠔΔ͜ͱͷ෼ྨ Crash Failure ɹ (fail-stop, fail-safe) ނোͨ͠Βࢭ·Δɺࢭ·ͬͨ͜ͱ͕͢ ͙ʹ෼͔Δ Crash Failure (fail-silent) ໧ͬͯࢮ͵ Crash Recovery ނোͨ͠ϑϦͯ͠஌ΒΜ΀Γͯ͠ؼͬͯ ͘Δ Omission Failure (receive / send) ϝοηʔδܽམ Timing Failure ·ͱ΋ͳ଎౓Ͱಈ͔ͳ͘ͳΔ Response Failure Ϩεϙϯε͕͓͔͍͠ʢσʔλ͕յΕͯ ͍Δetcʣ Arbitrary Failure Ϗβϯνϯނোɺѱҙͷ͋ΔϠπ͕͍Δ 31

Slide 32

Slide 32 text

෼ࢄ߹ҙͷछྨ •  ʮΞτϛοΫϒϩʔυΩϟετϓϩτίϧʯ •  ͓͓·͔ʹ͍ͬͯ෼ࢄ߹ҙ͢ΔͨΊͷϓϩτίϧΛ ૯শͯ͠ •  ΞτϛοΫ͡Όͳ͍ϒϩʔυΩϟετ΋୔ࢁ͋ͬͯͦ ΕͳΓʹಈ͍͍ͯΔ •  ୅දతͳ΋ͷPaxos, Rafter, ZAB 32

Slide 33

Slide 33 text

33 Consensus Based Replication • ϨϓϦέʔγϣϯͷϦʔμʔΛଟ਺ܾͰબग़ • or ϨϓϦέʔγϣϯຖʹଟ਺ܾ w1 w1 w1 w2 w2 w2 Actor 0 Actor 1 Actor 2 w2 w2 w1

Slide 34

Slide 34 text

34 What is PAXOS? – Example   Two phase election – phase 1  Larger n is prior 21:32 8ß: ¼ ÛËÙêîĝ 21:36 O2Ě 21:35 [_ÕðJK 21:36 O2ÙÐÄorz 21:38 O2ÙÐÞorz n=3 n=1 n=2 8

Slide 35

Slide 35 text

35 What is PAXOS? – Example   Two phase election – phase 2  confirmation 21:42 Ãğ 21:41 O2ÙÀÀ ëÞĝĚ 21:43 a~Å… 21:44 Ãğ 21:43 GJ proposer 21:43 ÀêO2ÚyÁËÚ Ù|N`çÜßÙ n=4 9

Slide 36

Slide 36 text

Մ༻ੑͷ໰୊ •  σʔλΛ͍͟ॻ͖ࠐ΋͏ͱࢥͬͨॠؒʹσʔλ͕σʔλϕʔε ͕མ͍ͪͯͨΓݻ·͍ͬͯͯ͸ϏδωενϟϯεΛಀ͢ 36

Slide 37

Slide 37 text

CAPఆཧ ͲΜͳނোʹରͯ͠΋ QBSUJUJPOUPMFSBODF σʔλ͸ৗʹ੔߹͓ͯ͠Γ DPOTJTUFODZ γεςϜ͕ࢭ·Δ͜ͱ͸ͳ͍ BWBJMBCJMJUZ • ͜ͷ3ͭΛಉ࣌ʹຬͨ͢γεςϜ͸ଘࡏ͠ͳ͍ • ͜Ε·ͰͷRDBMS͸CAॏࢹ 37

Slide 38

Slide 38 text

CAPఆཧʢCॏࢹͷ৔߹ʣ •  n1ͱn2ͷϨϓϦΧΛৗʹ੔߹͓ͤͯ͘͞ •  ωοτϫʔΫ͕੾ΕͨΓނোͨ͠ΒࢭΊΔˠՄ༻ੑˣ 38 w1 w2 n1 n2

Slide 39

Slide 39 text

CAPఆཧʢAॏࢹͷ৔߹ʣ •  n1ͱn2ͷϨϓϦΧΛৗʹ࢖͑ΔΑ͏ʹ͢Δ •  ωοτϫʔΫ͕੾ΕͨΓނোͯ͠΋ॻ͚Δˠ੔߹ੑˣ 39 w1 w2 n1 n2

Slide 40

Slide 40 text

CAPఆཧʢPॏࢹͷ৔߹ʣ •  n1ͱn2ͷϨϓϦΧΛΤεύʔʹ͢Δ •  ωοτϫʔΫ͕੾ΕͨΒਖ਼͍͠ํ͕Θ͔ΔˠՄ༻ੑͪ ΐͬͱˣ 40 w1 w2 n1 n2

Slide 41

Slide 41 text

Amazon’s Dynamo •  ʮσʔλϕʔε͸ϦϨʔγϣφϧ͚ͩ͡Όͳ͍ɺ੔߹ ੑ͚ͩ͡Όͳ͍ɺՄ༻ੑ͕େࣄͳ৔߹΋͋ΔΜͩʯ •  ΞϚκϯͷγϣοϐϯάΧʔτʹ࢖ΘΕ͍ͯͨ •  Vector Clocks •  Handoff •  (CRDT in Riak) 41

Slide 42

Slide 42 text

ʮͱΓ͋͑ͣॻ͘ʯͱ͍͏ߟ͑ •  “Hinted Handoff” Ϧϯάͷ࣍ͷਓ ʹͱΓ͋͑ͣ౉͓ͯ͘͠ •  ނো͔Β໭͖ͬͯͨΒฦ͢ •  ॻ͖ࠐΈ͕ॏෳͨ͠Βʁ 42 w1

Slide 43

Slide 43 text

ͱΓ͋͑ͣॻ͍͓͍ͯͯ ॻ͖ࠐΈ͕িಥͨ͠Βʁ •  ྆ํ͓͍࣋ͬͯͯɺিಥͨ͠σʔ λͷʮҼՌؔ܎ʯΛ໌Β͔ʹ͢Δ •  “Vector Clock” •  {a: 1, b:2, c:1} ͱ {a: 2, b:2, c:1} •  {a: 1, b:2, c:1} ͱ {a: 1, c:1, d:1} •  িಥͨ͠΋ͷ͸ΞϓϦͰղܾ 43 w1 w2 r

Slide 44

Slide 44 text

44 CRDT • CRDT (Conflict-Free Replicated Data Types • “AP” Λαϙʔτ • Counter, Register, Sets, Maps • →ผεϥΠυʁ

Slide 45

Slide 45 text

45 CRDTͰͷRead • ॱ൪͕ೖΕସΘͬͯ΋݁Ռ͕มΘΒͳ͍ܕ • update(w1, update(w2, Data0) = update(w2, update(w1, Data0) = Data w1 w1 w1 w2 w2 w2 Actor 0 Actor 1 Actor 2 w1(w2(Data0)) => Data w1(w2(Data0)) => Data w2(w1(Data0)) => Data

Slide 46

Slide 46 text

ACID vs BASE ACID BASE ੔߹͍ͯ͠ͳͯ͘΋ ৗʹσʔλʹΞΫη εͰ͖Δ Basically Avaiable Atomicity ෳ਺ͷૢ࡞ͷ੒ޭɾ ࣦഊΛ·ͱΊΔ Consistency ৑௕Խ͞Εͨσʔλ ΍ෳ਺ͷϦϨʔγϣ ϯ͕ৗʹ੔߹͍ͯ͠ Δ ࠷ऴతʹ੔߹ͨ͠ঢ় ଶʹͳΔ͜ͱ͕อূ ͞Ε͍ͯΕ͹Α͍ Eventually Consistent Isolation ฒߦ؅ཧͯ͠ߋ৽్ தͷঢ়ଶΛݟͤͳ͍ Durability σʔλΛӬଓԽͯ͠ ࣦΘͳ͍ ϨϓϦΧ͸ܾఆ࿦త Ͱ͸ͳ͘ɺ֬཰తͰ ͋ͬͨΓɺάϩʔό ϧʹҰ؏͍ͯ͠ͳ͘ ͯ΋Α͍ Soft-state 46

Slide 47

Slide 47 text

σʔλετΞͷ෼ྨ࣠ 47

Slide 48

Slide 48 text

ΫΠζɿͲ͜·Ͱ͕DB? Ͳ͔͜Β͕NoSQL? ACIDͳτϥϯβΫγϣϯ τϥϯβΫγϣϯͳ͠ SQLΠϯλʔϑ Σʔε Oracle MySQL PostgreSQL SQL Server, DB2 Cassandra (CQL) Hive, Presto Impala ಠࣗAPI InnoDB BerkeleyDB FoundationDB Riak MongoDB Redis 48

Slide 49

Slide 49 text

ςετʹग़ͳ͍ຊ౰ͷ͜ͱ 49

Slide 50

Slide 50 text

CAPఆཧ͔ΒΈͨ੡඼ͷ෼ྨ •  CAॏࢹ •  RDBMS, MongoDB, HBase, etc… •  ੔߹ੑҡ࣋ͷͨΊͷ෼ࢄ߹ҙʢਖ਼͘͠ϑΣΠϧΦʔ όʔ͢ΔͨΊʣͷ࢓૊Έ͕ඞཁ •  APॏࢹ •  Cassandra, Riak, CouchDB •  ෼ࢄ߹ҙͷ࢓૊Έ͕ෆཁʹ࣮૷΋ӡ༻΋؆୯ 50

Slide 51

Slide 51 text

͜͜·Ͱͷ·ͱΊ: ͱͯ΋ᐆດͳද CAॏࢹ APॏࢹ RDBMS HBase MongoDB Cassandra CouchDB Riak 51

Slide 52

Slide 52 text

ϦϨʔγϣφϧϞσϧΛఘΊΔ 52 •  ςʔϒϧߏ଄ => KVS (Mapߏ଄) •  Pkey͸ΧϥϜͷͻͱ͔ͭΒબͿ΋ͷ=> ඞਢͷ΋ͷ •  JOINΛͤ͞ͳ͍ •  ͜ΕʹΑΓεέʔϧΞ΢τܕͷ෼ࢄ͕Մೳʹ •  εΩʔϚΛࣄલఆٛ͠ͳ͍

Slide 53

Slide 53 text

εΩʔϚ: σʔλϕʔεͷσʔλߏ଄ΛܾΊΔ΋ͷ •  εΩʔϚΛࣄલʹఆٛ: ϦϨʔγϣφϧϞσϧʹԊͬͨ࢖͍ํ •  Pros: σʔλߏ଄ʹڧྗͳ੍໿Λ՝ͨ͢Ί࠷దԽ͠΍͍͢ˍΞϓϦ Λ։ൃ͠΍͍͢ •  Cons: ΞϓϦͷมߋίετ͕ߴ͍ˍ࠷ॳʹద੾ʹઃܭ͠ͳ͍ͱ͔ͳ Γมߋʹऑ͍ •  εΩʔϚΛࣄલʹܾΊΔඞཁ͕ͳ͍৔߹ •  Pro: σʔλߏ଄Λޙ͔ΒͰ΋͔ͳΓॊೈʹมߋͰ͖Δ •  Con: ςετ͕ͳ͍ͱόά͕ग़΍͍͢ɺσʔλߏ଄͕ෳࡶͩͱ࠷ద Խ͠ʹ͍͘ 53

Slide 54

Slide 54 text

৽͍͠σʔλϞσϧ ΧϥϜࢦ޲ •  ΧϥϜΛ͍͘ΒͰ΋૿΍ ͢͜ͱ͕Ͱ͖Δ •  Query LanguageΛ࡞Δ •  ʮΧϥϜϑΝϛϦʔʯ •  HBase, Cassandra υΩϡϝϯτࢦ޲ •  ݸʑͷϨίʔυ͕ࣗ༝ͳ ܗࣜΛ࣋ͭ •  MapReduceͰΫΤϦ •  XML, JSON, etc … •  CouchDB, MongoDB 54

Slide 55

Slide 55 text

͜͜·Ͱͷ·ͱΊ: ͱͯ΋ᐆດͳද2 CAॏࢹ APॏࢹ SQL RDBMS - ΧϥϜࢦ޲ HBase Cassandra υΩϡϝϯτࢦ޲ MongoDB CouchDB (blob) Riak 55

Slide 56

Slide 56 text

΋͏ͻͱͭσʔλϞσϧ Graph •  Semantic Webతͳσʔλߏ଄Λѻ͏ͨΊͷDB •  ;ͨͭͷํ޲ੑ •  ϊʔυͱΤοδΛਂ͘୳ࡧ͍ͨ͠ •  ϊʔυͱΤοδ͕ଟ͗͢Δ 56

Slide 57

Slide 57 text

σʔλϕʔε͕ಈ͘ॲཧܥ •  ωΠςΟϒ •  ଎͍ɺϝϞϦ؅ཧɺGC͕ͳ͍ •  JVM •  ଎͍ɺϝϞϦ؅ཧ͠ͳ͍͍ͯ͘ɺGC͕ى͖Δ •  Erlang VM •  ͦͦ͜͜଎͍ɺϝϞϦ؅ཧ͠ͳ͍͍ͯ͘ɺGCͰࢭ ·Βͳ͍ 57

Slide 58

Slide 58 text

58

Slide 59

Slide 59 text

͍··Ͱઆ໌͖ͯͨ͠ͷͰ؆୯ ໰୊ Riak͸Ͳ͏͍ͯ͠Δ͔ εέʔϦϯά ϋογϡతϧʔςΟϯάͰGossipͳਫฏ෼ࢄ ੔߹ੑͷ؅ཧ Vector Clocks, CRDTͳͲRead࣌ʹղܾ 2.0Ͱ͸Paxos΋ೖΔ Մ༻ੑͷอূ Hinted HandoffΛ࢖ͬͯৗʹॻ͖ࠐΈ͕Ͱ͖ΔΑ͏ ʹ͍ͯ͠Δ σʔλϞσϧ Blob + Document Based ΠϯσοΫεΛ͸ΕΔ MapReduce͕Ͱ͖Δ ॲཧܥ Erlang VM 59

Slide 60

Slide 60 text

࣮૷໘ͰͷRiakͷಛ௃ •  ʮ໷தʹΞϥʔτͰى͜͞Εͳ͍ʯ͜ͱΛ໨ࢦͨ͠ •  Erlang VMΛ࢖༻ •  GCʹΑΔఀࢭ͕࣌ؒͳ͍ •  ແఀࢭͰͷύονద༻ɺղੳɺૢ࡞͕Մೳ •  ίϚϯυମܥɾϑΝΠϧߏ଄ɾσʔλߏ଄ΛͳΔ΂͘γϯϓϧʹઃ ܭ͠ӡ༻ෛ୲Λ௿ݮ •  ҆ఆੑΛॏࢹͨ͠ઃܭ •  ίϯύΫγϣϯɺ༧ଌՄೳੑ 60

Slide 61

Slide 61 text

݁ہɺͲ͏͍͏ͱ͖ʹͲΕΛ࢖͑͹Α͍ͷ͔ʁ 61

Slide 62

Slide 62 text

࣮૷໘΋ߟྀͨ͠ ੡඼બ୒ͷϙΠϯτ •  JOINͳͲσʔλͷਖ਼نԽ͕ඞཁͳͱ͖: RDBMS •  ΦϯϝϞϦͰ࠷৽ͷ࣌ܥྻσʔλΛݟ͍ͨͱ͖: MongoDB •  ΧϥϜΛ͍͘ΒͰ΋૿΍͍ͨ͠ͱ͖ •  SQL෩ͷΫΤϦΛ͍ͨ͠ͱ͖ or Մ༻ੑ: Cassandra •  େྔσʔλʹޮ཰తʹόονॲཧΛ͍ͨ͠ͱ͖: Hbase •  σʔλΛͳ͘͞ͳ͍&μ΢ϯλΠϜΛͳ͍ͨ͘͠ͱ͖: Riak 62

Slide 63

Slide 63 text

·ͱΊ •  σʔλϕʔεͷྺ࢙తʹNoSQL͸৽͘͠͸ͳ͍ •  SQLͱACID͸ผͷ͸ͳ͠ɺNoSQLͱ͍͏ΑΓNoACID •  εέʔϦϯά͸ʢཧ۶͸ʣ೉͘͠ͳ͍ •  ੔߹ੑ͸ཧ۶͔Βͯͦ͠΋ͦ΋೉͍͠ •  Մ༻ੑ͸ͦΜͳʹ೉͘͠ͳ͍ •  Riak͸Մ༻ੑͱεέʔϥϏϦςΟ͕ಘҙ 63

Slide 64

Slide 64 text

Questions? 64 ࢀߟจݙϦετ: https://gist.github.com/kuenishi/8296883#refs