2020.11.13 Web System Architecture 研究会 (WSA研) #7 https://wsa.connpass.com/event/187128/
ࡾ༔հ / Pepabo R&D Institute, GMO Pepabo, Inc.2020.11.13 Web System Architecture ݚڀձ (WSAݚ) #7ᅂୡίϛϡχέʔγϣϯͷޮԽΛࢦͨ͠ୡํࣜͷݕ౼
View Slide
1SJODJQBMFOHJOFFS:VTVLF.*:",&!NPOPDISPNFHBOF1FQBCP3%*OTUJUVUF (.01FQBCP *ODIUUQTCMPHNPOPDISPNFHBOFDPN
1. ͡Ίʹ2. ᅂୡίϛϡχέʔγϣϯͷ՝ͱޮԽͷݕ౼1. ૉੑใͷୡํࣜ2. ᅂใͷୡํࣜ3. ධՁ4. ·ͱΊ3࣍
1.͡Ίʹ
• దԠతͳγεςϜͷ࣮ݱʹɺγεςϜ͕ར༻ऀͷঢ়گΛΑ͘Δ͜ͱ͕ॏཁ• ECαΠτͷγεςϜͰ͋Εɺར༻ऀͷᅂΛѲ͢Δ͜ͱͰɺ࠷దͳΛఏҊͰ͖Δ• ಛʹॳظஈ֊ʹ͓͚Δར༻ऀͱͷҰఆྔͷίϛϡχέʔγϣϯ͕ඞཁ• ໌ࣔతͳίϛϡχέʔγϣϯʢϓϩϑΝΠϧͷొͳͲʣ• ҉తͳίϛϡχέʔγϣϯʢߦಈཤྺͷੵͳͲʣ5దԠతͳγεςϜͱίϛϡχέʔγϣϯ
• దԠతͳγεςϜར༻ऀͷ͜ͱΛΓ͍ͨ• ҰํͰɺར༻ऀʹͱͬͯ͜ͷୡෛ୲• ࿑ྗతʢొੵ࡞ۀʣ• ਫ਼ਆతʢϓϥΠόγʔอޢʣ• Ճ͑ͯɺ͜ͷΓͱΓγεςϜ͝ͱʹߦΘΕΔ6దԠతͳγεςϜͱίϛϡχέʔγϣϯͷ՝
• γεςϜ͝ͱʹൃੜ͢ΔίϛϡχέʔγϣϯΛޮԽ͍ͨ͠• ୡ͢ΔใྔͰ͖Δ͚ͩଟ͘• ར༻ऀͷෛ୲Ͱ͖Δ͚ͩখ͘͞7దԠతͳγεςϜͱίϛϡχέʔγϣϯͷ࣮ݱʹ͚ͯར༻ऀͷᅂୡʹవΘΔίϛϡχέʔγϣϯͷෛ୲Λݮͭͭ͠ɺదԠతͳγεςϜʹΑΔརศੑΛৗʹڗडͰ͖ΔΠϯλʔωοτੈք
2.ᅂୡίϛϡχέʔγϣϯͷ՝ͱޮԽͷݕ౼
• ᅂ(preference)ͱʮར༻ऀͷૉੑ(feature)ʯʹجͮ͘ʮର(content)ͷԠ(reaction)ʯͱ͢Δ9ୡରͰ͋Δʮᅂใʯͷຊݚڀʹ͓͚Δఆٛpreference(feature,content) #=> reactionᶃར༻ऀͷૉੑใΛ͑Δᶄར༻ऀͷᅂใΛ͑Δ
ᶃ ར༻ऀͷૉੑ(feature)ͷୡͷ՝ͱޮԽͷݕ౼
1. γεςϜʹݶఆ͞Εͨར༻ऀͷૉੑૉੑͱͳΔϓϩϑΝΠϧߦಈཤྺγεςϜ͝ͱʹݶఆ͞ΕΔ→ γεςϜΛԣஅͨ͠ߦಈཤྺ͔ΒͳΔૉੑ͕ར༻Ͱ͖Δͱͳ͓ྑ͍2. దͳσʔλߏ͕ෆ໌γεςϜΛԣஅͨ͠ૉੑΛߏஙͰ͖Δͱͯ͠ɺແݶͷཁҼީิΛ࣋ͭڞ௨ͷಛྔΛશγεςϜͰཧ͢Δ͜ͱ͍͠3. ϓϥΠόγʔอޢ͕ඞཁར༻ऀଆߦಈཤྺͷ։ࣔʹ͋ͨͬͯ༰ͷ੍ݶΛٻΊΔͩΖ͏11ར༻ऀͷૉੑ(feature)ͷୡͷ՝
• γεςϜΛԣஅͨ͠ߦಈσʔλΛہॴཧ͢ΔΞϓϩʔν• Key-Valueܗࣜͷσʔλߏ• γεςϜͷఏࣔ࣌ʹɺ͜ͷKey-ValueܗࣜͷσʔλΛBloomFilterʹม• ِཅੑ: KeyΛஅఆ͢Δ͜ͱ͕Ͱ͖ͳ͍ಛੑ• ۭؒޮ: อଘ͢Δཁૉʹґଘ͠ͳ͍ಛੑ12ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷݕ౼
ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷݕ౼134ZTUFN-PDBMIUUQFYBNQMFDPNQSPEVDUT IUUQFYBNQMFDPNQSPEVDUT [email protected] [email protected] [email protected] ʜ ʜ4ZTUFN4ZTUFN,FZ7BMVFEBUBTUPSFγεςϜΛԣஅͨ͠ૉੑͷੵʢӾཡධՁཤྺͳͲʣ
ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷݕ౼144ZTUFN-PDBMIUUQFYBNQMFDPNQSPEVDUT IUUQFYBNQMFDPNQSPEVDUT [email protected] [email protected] [email protected] ʜ ʜ4QBUJBM#MPPN'JMUFS4ZTUFN4ZTUFN,FZ7BMVFEBUBTUPSFِཅੑݻఆ࣍ݩ
ᶄ ର(content)ͷԠ(reaction)ͷୡͷ՝ͱޮԽͷݕ౼
1. γεςϜʹݶఆ͞Εͨར༻ऀͷૉੑର(content)γεςϜʹݶఆ͞ΕΔͨΊɺγεςϜ͝ͱʹͦͷԠΛఏࣔ͠ͳ͚ΕͳΒͳ͍ɻ͜ͷ࣌ɺར༻ऀͷᅂΛΑΓΔͨΊʹɺͰ͖Δ͚ͩଟ͘ͷର(content)ʹର͢ΔԠ(reaction)ΛࣔͤΔ͜ͱ͕·͍͕͠ɺ࿑ྗతͳෛ୲ൺྫͯ͠૿Ճ͢Δɻ2. ϓϥΠόγʔอޢ͕ඞཁར༻ऀଆᅂͷ։ࣔʹ͋ͨͬͯ༰ͷ੍ݶΛٻΊΔͩΖ͏16ର(content)ͷԠ(reaction)ͷୡͷ՝
• ᅂϞσϧΛہॴཧ͢ΔΞϓϩʔν• ᅂϞσϧͷߏஙͱར༻ϩʔΧϧΤʔδΣϯτ͕ߦ͏• ߏங͞ΕΔᅂϞσϧ͜Ε·Ͱͷߦಈσʔλ͔Βɺະͷର(content)ͷԠ(reaction)Λਫ਼Α͘ਪଌ͢Δ• ϩʔΧϧΤʔδΣϯτɺ͜ͷϞσϧΛ͍ɺγεςϜʹର͢Δର(content)ͷԠ(reaction)ͷୡΛཧ͢Δ17ର(content)ͷԠ(reaction)ͷୡͷํࣜͷݕ౼
ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷݕ౼184ZTUFN-PDBMIUUQFYBNQMFDPNQSPEVDUT IUUQFYBNQMFDPNQSPEVDUT [email protected] [email protected] [email protected] ʜ ʜ4ZTUFNγεςϜΛԣஅͨ͠ૉੑͷੵʢӾཡධՁཤྺͳͲʣᅂ༧ଌϞσϧΛߏங -PDBM"HFOU
ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷݕ౼194ZTUFN-PDBMIUUQFYBNQMFDPNQSPEVDUT IUUQFYBNQMFDPNQSPEVDUT [email protected] [email protected] [email protected] ʜ ʜ4ZTUFN4ZTUFNᅂ༧ଌϞσϧ-PDBM"HFOUᅂͷཧԠʢఏࣔൣғͷ੍ݶʹΑΔϓϥΠόγʔอޢʁʣ
ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷݕ౼204ZTUFN-PDBMIUUQFYBNQMFDPNQSPEVDUT IUUQFYBNQMFDPNQSPEVDUT [email protected] [email protected] [email protected] ʜ ʜ4ZTUFN4ZTUFNᅂ༧ଌϞσϧ-PDBM"HFOUదԠతͳৼΔ͍
3.ධՁ
ᶃ ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷධՁ
ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷݕ౼234ZTUFN-PDBMIUUQFYBNQMFDPNQSPEVDUT IUUQFYBNQMFDPNQSPEVDUT [email protected] [email protected] [email protected] ʜ ʜ4QBUJBM#MPPN'JMUFS4ZTUFN4ZTUFN,FZ7BMVFEBUBTUPSFِཅੑݻఆ࣍ݩ
• BloomFilter (Not spatial)ʹมͨ͠ૉੑʹΑΔᅂใͷୡೳྗΛௐΔ• ૉੑΛಛྔͱͯ͠༻͍ͨઢܗͳଟόϯσΟοτͷγϛϡϨʔγϣϯ• ֤ͨͩ͠ͷઢܗύϥϝʔλ ͷਪఆ͍ྃͯ͠Δͷͱ͢Δ• ͷ֤࣍ݩͷਪఆॏෳ͢Δݩͷઢܗύϥϝʔλͷظͱͨ͠• ݩͷૉੑͱൺֱͯ͠ఏҊख๏ͷૉੑͰɺͲͷఔਫ਼ʹมԽ͕͋Δ͔֬ೝ̂θâθa24ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷ༗ޮੑarg maxaxTa✓a = arg maxaˆxTaˆ✓aAAADKnichZG7TtxAFIaPnQuwhLAkDRKNlRUo1WpMIoFAkVBoKLktIGGyGg+zuyM8tmXPLpCR8wB5AQqqRKJA0PMANKkjpVilpUGUIKVJwfElSgiEjGXPmf+cb/zPHDf0RKwI6Rrmg4ePHvf09pX6nww8HSwPPVuJg3bEeI0FXhCtuTTmnvB5TQnl8bUw4lS6Hl91t2bT/GqHR7EI/GW1G/INSZu+aAhGFUr18oHj820WSEn9Te3QqCnpTqIdSVUrCLUTSQu1D6noeEIKFSeloqquaWI5rtQ7SRq+y6G4oZeTJJUd1eKKZjnrjXUDalGlc/IO9FfyDz6plyukSrJh3Q7sIqhAMeaD8gk4sAkBMGiDBA4+KIw9oBDjsw42EAhR2wCNWoSRyPIcEigh28YqjhUU1S38NnG1Xqg+rtM944xm+BcP3whJC0bJN3JILskXckTOyc9/7qWzPVIvuzi7OcvD+uDH4aUf/6Ukzgpav6l7PStowGTmVaD3MFPSU7Cc77zfu1yaWhzVY+QzuUD/n0iXnOIJ/M4VO1jgi/v3+HHRC94YNsj+ux23g5Xxqv2qOr7wujLztmhVL4zAC3iJ/ZiAGZiDeagBM/oN25gyps1j86vZNb/npaZRMM/hxjDPrgHjidXg
ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷ༗ޮੑ25BDDVSBDZ%JNFOTJPO 0SJHJOBM EFOTJUZ EFOTJUZ EFOTJUZ EFOTJUZ EFOTJUZ3BUFPG'1%FOTJUZ %FOTJUZ %FOTJUZ %FOTJUZ %FOTJUZ ີ͝ͱͷਫ਼ͷมԽࢀߟີ͝ͱͷِཅੑɺύλʔϯͷઢܗύϥϝʔλʹରͯ͋͠ΔίϯςΩετ͕ൃੜͨ͠߹ͷਫ਼ͷมԽɻίϯςΩετऔΓ͏Δύλʔϯͷ͏ͪ ύλʔϯΛαϯϓϦϯάͨ͠ͳ͓ɺϋογϡؔͷৗʹk = 1
ᶄ ର(content)ͷԠ(reaction)ͷୡͷํࣜͷධՁ
ར༻ऀͷૉੑ(feature)ͷୡͷํࣜͷݕ౼274ZTUFN-PDBMIUUQFYBNQMFDPNQSPEVDUT IUUQFYBNQMFDPNQSPEVDUT [email protected] [email protected] [email protected] ʜ ʜ4ZTUFN4ZTUFNᅂ༧ଌϞσϧ-PDBM"HFOUᅂͷཧԠʢఏࣔൣғͷ੍ݶʹΑΔϓϥΠόγʔอޢʁʣ
• WIP• Ͳ͏ධՁ͢Δʁ• ϩʔΧϧΤʔδΣϯτͱ༧ଌϞσϧ࡞ΕΔͱͯ͠• ࣮αʔϏεʹΈࠐΉͱͨ͠ΒίϛϡχέʔγϣϯఔΛͲ͏ઃܭ͢Δʁ• Ͳ͜ʹ৽نੑΛग़͢ʁΞʔΩςΫνϟʁᅂϞσϧʁ• ྨࣅݚڀʁ28ର(content)ͷԠ(reaction)ͷୡͷํࣜͷධՁ
4.·ͱΊ
• దԠతͳγεςϜͷ࣮ݱʹඞਢͷୡίϛϡχέʔγϣϯͷෛ୲ʹணͨ͠• ECαΠτΛྫʹᅂใΛޮతʹୡ͢ΔํࣜΛݕ౼ͨ͠• ૉੑΛہॴཧ͠BloomFilterΛ༻͍ͯϓϥΠόγʔΛߟྀ͠ͳ͕Βఏࣔ͢ΔํࣜͰɺୡਫ਼ͷมԽʹ͍ͭͯ༧උධՁΛߦ͍ɺਫ਼Լʹ͍ͭͯ՝Λ֬ೝͨ͠• ผ్ɺᅂϞσϧΛہॴཧ͠ϩʔΧϧΤʔδΣϯτΛ༻͍ͯཧԠ͢ΔํࣜΛݕ౼͠ɺ͜ͷ࣮ݱੑʹ͍ͭͯٞͨ͠ʢ͢Δʣ30·ͱΊhttps://icons8.comhttps://icons8.com
ิࢿྉ
BloomFilter
• ͻͱͭͷϒϧʔϜϑΟϧλ Ϗοτͷྻ͔ΒΔm34ϒϧʔϜϑΟϧλ0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0Bloom filter(m = 10)
• ͻͱͭͷϒϧʔϜϑΟϧλ Ϗοτͷྻ͔ΒΔ• ཁૉ ݸͷϋογϡ͔ؔΒಘΒΕΔྻͷఴࣈҐஔͷू߹ʹม͞ΕΔmk35ϒϧʔϜϑΟϧλʢཁૉͷՃʣH1(element1) = 0H2(element1) = 9element1Hash function(k = 2)
• ͻͱͭͷϒϧʔϜϑΟϧλ Ϗοτͷྻ͔ΒΔ• ཁૉ ݸͷϋογϡ͔ؔΒಘΒΕΔྻͷఴࣈҐஔͷू߹ʹม͞ΕΔ• ू߹શཁૉͷྻͷఴࣈͷू߹Λ1ͱ͢Δྻͱͯ͠දݱ͞ΕΔmk36ϒϧʔϜϑΟϧλʢཁૉͷՃʣ1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1H1(element1) = 0H2(element1) = 9element1Bloom filter(m = 10)Hash function(k = 2)
• ͻͱͭͷϒϧʔϜϑΟϧλ Ϗοτͷྻ͔ΒΔ• ཁૉ ݸͷϋογϡ͔ؔΒಘΒΕΔྻͷఴࣈҐஔͷू߹ʹม͞ΕΔ• ू߹શཁૉͷྻͷఴࣈͷू߹Λ1ͱ͢Δྻͱͯ͠දݱ͞ΕΔmk37ϒϧʔϜϑΟϧλʢཁૉͷՃʣ1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1H1(element2) = 1H2(element2) = 9element2Bloom filter(m = 10)Hash function(k = 2)
• ͍߹ΘͤΔཁૉʹରͯ͠kݸͷϋογϡ͔ؔΒಘΒΕͨఴࣈҐஔΛ͏• ҰͭͰ0͕͋Εʮઈରʹʯؚ·Εͳ͍38ϒϧʔϜϑΟϧλʢཁૉͷ͍߹Θͤʣ1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1H1(element3) = 1H2(element3) = 8element3Bloom filter(m = 10)Hash function(k = 2)❌
• ͍߹ΘͤΔཁૉʹରͯ͠kݸͷϋογϡ͔ؔΒಘΒΕͨఴࣈҐஔΛ͏• ҰͭͰ0͕͋Εʮઈରʹʯؚ·Εͳ͍• શͯ1ʹͳ͍ͬͯΕʮɹɹʯؚ·ΕΔ39ϒϧʔϜϑΟϧλʢཁૉͷ͍߹Θͤʣ1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1H1(element1) = 0H2(element1) = 9element1Bloom filter(m = 10)Hash function(k = 2)⭕
• ͍߹ΘͤΔཁૉʹରͯ͠kݸͷϋογϡ͔ؔΒಘΒΕͨఴࣈҐஔΛ͏• ҰͭͰ0͕͋Εʮઈରʹʯؚ·Εͳ͍• શͯ1ʹͳ͍ͬͯΕʮଟʯؚ·ΕΔ40ϒϧʔϜϑΟϧλʢཁૉͷ͍߹Θͤʣ1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1H1(element4) = 0H2(element4) = 1element4Bloom filter(m = 10)Hash function(k = 2)❓