Slide 1

Slide 1 text

3BJMT%FWFMPQFS.FFUVQ!0SBDMF$PSQPSBUJPO+BQBO ૢ࡞ཤྺ࣌఺ࢦఆΞΫηεͷ࣮ݱ
 #J5FNQPSBM%BUB.PEFMͷ࣮ફ 4BU G 4NBSU)3ΤϯδχΞ CONFIDENTIAL

Slide 2

Slide 2 text

ࣗݾ঺հ CONFIDENTIAL

Slide 3

Slide 3 text

!G גࣜձࣾ4NBSU)3ॴଐ ΤϯδχΞ ೥݄ೖࣾ  4NBSU)3ίΞػೳͷอकɾ֦ுΛ୲౰ CONFIDENTIAL

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

ࣾձอݥ౳ͷॻྨΛ ࣗಈ࡞੒ ैۀһ৘ใΛ σʔλϕʔεԽ ໾ॴ΁γʔϜϨεʹ ΦϯϥΠϯਃ੥ ਓࣄ৘ใΛ Χϯλϯʹऩू ˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔ ˔˔˔˔˔˔˔˔ ˔˔˔˔ ˔˔˔˔˔˔˔˔ 4NBSU)3͸ɺਓࣄɾ࿑຿ʹؔ͢Δखଓ͖ͷ ࣗಈԽΛ໨ࢦ͢Ϋϥ΢υܕιϑτ΢ΣΞͰ͢ɻ

Slide 6

Slide 6 text

ߦ੓΁ͷ ిࢠਃ੥ څ༩໌ࡉ ޏ༻ܖ໿ॻ ैۀһ%# εϚϗͰ ೥຤ௐ੔ ࣾձอݥ ޏ༻อݥ ਓࣄɾ࿑຿Λ෯޿͘Χόʔʢࠓޙ΋֦େ͍͖ͯ͠·͢ʣ /FX

Slide 7

Slide 7 text

ࠓޙͷํ਑ ݱࡏ ਓࣄ޲͚ 4BB4 ސ٬ج൫ ʢਓࣄɾैۀһʣ ਓࣄ%# ʢձࣾɾݸਓʣ ஷ·Δࢿ࢈ কདྷ Ξοϓηϧ ϓϩμΫτ ϓϥοτ ϑΥʔϜԽ ۚ༥঎඼ ʢ'JO5FDIʣ কདྷ

Slide 8

Slide 8 text

ࠓޙͷํ਑ ݱࡏ ਓࣄ޲͚ 4BB4 ސ٬ج൫ ʢਓࣄɾैۀһʣ ਓࣄ%# ʢձࣾɾݸਓʣ ஷ·Δࢿ࢈ কདྷ Ξοϓηϧ ϓϩμΫτ ϓϥοτ ϑΥʔϜԽ ۚ༥঎඼ ʢ'JO5FDIʣ কདྷ ຊ೔ͷ࿩୊

Slide 9

Slide 9 text

ਓࣄ%# ब৬ ݁ࠗ ग़࢈ ҟಈ

Slide 10

Slide 10 text

4NBSU)3Ͱ͸ʜʜ
 ɾϥΠϑΠϕϯτͰมߋ͕ൃੜ ɹɾೖࣾɺୀࣾɺҾͬӽ͠ɺ݁ࠗɺग़࢈ͳͲ ɾݸਓ৘ใͷ͔ͨ·Γ ɹɾࢯ໊ɺॅॴɺ೥ۚ੔ཧ൪߸ͳͲ มભ͢ΔσʔλͷτϨʔαϏϦςΟͷ֬อ͕ඞཁ ਓࣄ%#

Slide 11

Slide 11 text

มભ͢ΔσʔλͷཤྺΛ࢒͍ͨ͠ ࢸߴͷਓࣄ%#ΛٻΊͯʜʜ ཤྺ͕࢒ͤΔΑ͏ʹͳͬͨΒʜ ɾ͋Δ࣌఺ͰͷσʔλΛҰཡ͍ͨ͠ ɹࣾһ਺ɺੈ୅ߏ੒ɺஉঁൺͳͲͷ෼ੳ ɾաڈͷ৘ใΛߋ৽͍ͨ͠ ɹͦͯ͠ʮߋ৽ͨ͠ʯͱ͍͏৘ใ΋࢒ͬͯ΄͍͠

Slide 12

Slide 12 text

4NBSU)3ຊମ ʹ3VCZPO3BJMTͷ ɹϞϊϦγοΫΞϓϦέʔγϣϯ "DUJWF3FDPSEͰͳΜͱ͔͢Δඞཁ͕͋Δ 4NBSU)3͸3P3ͰͰ͖͍ͯ·͢

Slide 13

Slide 13 text

CONFIDENTIAL 3VCZPO3BJMT
 ☓
 ཤྺ

Slide 14

Slide 14 text

# db/migrate/*.rb class CreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| t.string :name t.string :email t.timestamps end end end 3VCZPO3BJMTσϑΥϧτ

Slide 15

Slide 15 text

# db/schema.rb
 create_table "users", force: :cascade do |t| t.string "name" t.string "email" t.datetime "created_at", null: false t.datetime "updated_at", null: false end 3VCZPO3BJMTσϑΥϧτ

Slide 16

Slide 16 text

UUJNFTUBNQT ɹDSFBUFE@BU VQEBUFE@BU͕࡞ΒΕΔ ෺ཧ࡟আ 3VCZPO3BJMTσϑΥϧτ

Slide 17

Slide 17 text

ෳ਺ճߋ৽͞ΕΔͱɺ࠷৽ͷߋ৽೔෇͚͕ͩ ࢒Δ ফ͞Εͨ৘ใ͸੻ܗ΋ͳ͘ͳΔ 3VCZPO3BJMTσϑΥϧτ ͜Ε͚ͩͩͱۀ຿༻݅తʹݫ͍͠ʜ

Slide 18

Slide 18 text

͍Ζ͍Ζͳख๏͕͋ΔͷͰɺ ͬ͘͟Γͱ঺հ 3BJMT☓ཤྺ

Slide 19

Slide 19 text

ɾྫQBSBOPJB ɾEFMFUFE@BUΛ௥Ճ ɾ࡟আ࣌ɺEFMFUFE@BU5JNFDVSSFOU ɾݕࡧ࣌ɺ\EFMFUFE@BUOJM^ͳ ɹείʔϓΛ௥Ճ ࿦ཧ࡟আ

Slide 20

Slide 20 text

૿Ճ͢Δ஋ʢ਺ࣈɺ೔෇ʣΛ֨ೲͰ͖Δ ΧϥϜΛ༻ҙ
 ྫWFSTJPO EFMFUFE@BU όʔδϣχϯά ࠷৽ EFMFUFE@BU EFMFUFE@BU EFMFUFE@BU EFMFUFE@BU/6-- WFS WFS WFS WFS

Slide 21

Slide 21 text

࣮૷ྫ EFMFUFE@BUͷ৔߹  ɾૠೖ ɹಛʹมߋແ͠ ɾ࡟আ ɹ࿦ཧ࡟আ όʔδϣχϯά

Slide 22

Slide 22 text

࣮૷ྫ EFMFUFE@BUͷ৔߹  ɾߋ৽ ɹݱߦϨίʔυΛ࿦ཧ࡟আ
 ɹߋ৽಺༰Λૠೖ ɾࢀর ɹ௨ৗ࿦ཧ࡟আͰͳ͍΋ͷΛݕࡧ ɹաڈͷόʔδϣϯʹΞΫηε࿦ཧ࡟আ͞Ε͍ͯΔ΋ͷΛݕࡧ όʔδϣχϯά

Slide 23

Slide 23 text

<JE ৚݅ΧϥϜ>Ͱ ෳ߹ओΩʔతͳऔѻ͍ʹͳΔ ݱࡏͷ৘ใͱཤྺΛಉҰςʔϒϧͰ ؅ཧ͢ΔͨΊɺ ϢχʔΫ੍໿΍ϦϨʔγϣϯͳͲͰߟྀ͕ඞཁ ࿦ཧ࡟আɺόʔδϣχϯά

Slide 24

Slide 24 text

ผͷςʔϒϧʹίϐʔ ΍Γ͔ͨ ɾ%#ͷτϦΨʔ ɾΞϓϦέʔγϣϯͰߋ৽ɾ࡟আॲཧΛϑοΫ ίϐʔ಺༰ ɾϨίʔυͷશ಺༰ ɾࠩ෼ ཤྺςʔϒϧ

Slide 25

Slide 25 text

τϦΨʔͰίϐʔ ΞϓϦέʔγϣϯʹมߋ͕͍Βͳ͍ ݱߦσʔλͱࠞ͡Βͳ͍ͷͰѻ͍΍͍͢ ੑೳ໘Ͱ΋ϝϦοτ͋Γ ݱߦσʔλͱཤྺΛࠞͥͯදࣔ͢Δͷ͸໘౗ ɹʢͱ͘ʹؔ࿈ʣ ཤྺςʔϒϧ

Slide 26

Slide 26 text

ɾྫQBQFS@USBJM BVEJUFE ɾߋ৽಺༰ΛγϦΞϥΠζͯ͠ ɹผςʔϒϧʹૠೖ
 ɾࠩ෼Λٯॱʹద༻͍ͯ͘͜͠ͱͰ ɹϩʔϧόοΫ΋ ʢ4NBSU)3Ͱ΋Ҏલ࢖͍ͬͯͨʣ ཤྺςʔϒϧ

Slide 27

Slide 27 text

ɾΞϓϦέʔγϣϯϩά ɾ%#ͷ1*53 ɾ%#ࣗମͷػೳ ɹ.BSJB%#ʜ4ZTUFNWFSTJPOFE5BCMFT ɹ0SBDMFʜ*O%BUBCBTF"SDIJWJOH ͳͲ ཁ݅΍ίετʹԠͯ͡ݕ౼͕ඞཁ ͦͷଞ

Slide 28

Slide 28 text

2ɿ͍ͣΕ͔ͷํ๏Ͱ
 ɹɹཁ๬Λຬͨͤͦ͏͔ʁ CONFIDENTIAL

Slide 29

Slide 29 text

̖ɿ๻ͨͪͷٻΊΔ΋ͷʹ͸ ɹɹಧ͔ͳ͔ͬͨ CONFIDENTIAL

Slide 30

Slide 30 text

มભ͢ΔσʔλͷཤྺΛ࢒͍ͨ͠ ʢ͓͞Β͍ ࢸߴͷਓࣄ%#ΛٻΊͯʜʜ ཤྺ͕࢒ͤΔΑ͏ʹͳͬͨΒʜ ɾ͋Δ࣌఺ͰͷσʔλΛҰཡ͍ͨ͠ ɹࣾһ਺ɺੈ୅ߏ੒ɺஉঁൺͳͲͷ෼ੳ ɾաڈͷ৘ใΛߋ৽͍ͨ͠ ɹͦͯ͠ʮߋ৽ͨ͠ʯͱ͍͏৘ใ΋࢒ͬͯ΄͍͠

Slide 31

Slide 31 text

ͳʹ͔ͳ͍ͷ͔ʜʜ CONFIDENTIAL

Slide 32

Slide 32 text

ʊਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹBiTemporal Data Modelɹʻ ʉY^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ʉ

Slide 33

Slide 33 text

CONFIDENTIAL #J5FNQPSBM%BUB.PEFM

Slide 34

Slide 34 text

CONFIDENTIAL #J5FNQPSBM%BUB.PEFM ͭͷ ࣌ؒతͳ

Slide 35

Slide 35 text

OPOUFNQPSBMEBUBNPEFM VOJUFNQPSBMEBUBNPEFM CJUFNQPSBMEBUBNPEFM

Slide 36

Slide 36 text

OPOUFNQPSBMEBUBNPEFM %FMFUF *OTFSU 6QEBUF ࠷৽৘ใͷεφοϓγϣοτΛදݱ

Slide 37

Slide 37 text

OPOUFNQPSBMEBUBNPEFM ೖࣾ *% ໾৬  

Slide 38

Slide 38 text

OPOUFNQPSBMEBUBNPEFM *% ໾৬  ˠ෦௕ ෦௕ʹঢ֨

Slide 39

Slide 39 text

OPOUFNQPSBMEBUBNPEFM *% OBNF  ෦௕ ୀ৬

Slide 40

Slide 40 text

VOJUFNQPSBMEBUBNPEFM %FMFUF *OTFSU 6QEBUF ͦͷϨίʔυ͕༗ޮͳ࣌ؒΛ΋ͨͤΔ

Slide 41

Slide 41 text

VOJUFNQPSBMEBUBNPEFM *% ໾৬ ։࢝ ऴྃ    㱣 ೖࣾ ༗ޮظؒ

Slide 42

Slide 42 text

VOJUFNQPSBMEBUBNPEFM ෦௕ʹঢ֨ #FGPSF "GUFS  ʿ ʔ  ʿ ʔ  ෦௕ ࡟আ

Slide 43

Slide 43 text

VOJUFNQPSBMEBUBNPEFM *% ໾৬ ։࢝ ऴྃ    㱣ˠ ෦௕ʹঢ֨

Slide 44

Slide 44 text

VOJUFNQPSBMEBUBNPEFM *% ໾৬ ։࢝ ऴྃ    㱣ˠ  ෦௕  㱣 ෦௕ʹঢ֨

Slide 45

Slide 45 text

VOJUFNQPSBMEBUBNPEFM ୀࣾ #FGPSF  ʿ  "GUFS    ʔ ෦௕ ෦௕ ʔ

Slide 46

Slide 46 text

VOJUFNQPSBMEBUBNPEFM *% ໾৬ ։࢝ ऴྃ      ෦௕  㱣ˠ ୀ৬

Slide 47

Slide 47 text

Αͦ͞͏ VOJUFNQPSBMEBUBNPEFM

Slide 48

Slide 48 text

VOJUFNQPSBMEBUBNPEFM ʮd͸ʰ܎௕ʱͩͬͨ͜ͱ͕ൃ֮ʯ #FGPSF "GUFS        ʔ ෦௕ ෦௕ ʔ ܎௕

Slide 49

Slide 49 text

VOJUFNQPSBMEBUBNPEFM *% ໾৬ ։࢝ ऴྃ    ˠ  ෦௕   ʮdͷظؒ͸ʰ܎௕ʱͩͬͨʯ͜ͱ͕ൃ֮

Slide 50

Slide 50 text

VOJUFNQPSBMEBUBNPEFM *% ໾৬ ։࢝ ऴྃ    ˠ  ܎௕    ෦௕   ʮdͷظؒ͸ʰ܎௕ʱͩͬͨʯ͜ͱ͕ൃ֮

Slide 51

Slide 51 text

VOJUFNQPSBMEBUBNPEFM *% ໾৬ ։࢝ ऴྃ    ˠ  ܎௕    ෦௕   ʮdͷظؒ͸ʰ܎௕ʱͩͬͨʯ͜ͱ͕ൃ֮ ͱ͍͏৘ใ͕Ͳ͜ʹ΋ͳ͍ʂ

Slide 52

Slide 52 text

༗ޮظؒͱϨίʔυͷૢ࡞͕࣌ؒಉ͡Ͱ͋Ε͹ ໰୊ͳ͍͕ɺաڈͷཤྺૢ࡞͕ൃੜͯ͘͠Δͱ ༗ޮظؒͱૢ࡞࣌ؒ͸͹Β͹ΒʹͳΔɻ ઌఔͷྫͰ͸ʮ༗ޮظ͕ؒมߋ͞Εͨʯͱ͍͏ه࿥͕ දݱͰ͖͍ͯͳ͔ͬͨɻ VOJUFNQPSBMEBUBNPEFM

Slide 53

Slide 53 text

ɾ༗ޮظؒ ɾγεςϜతͳ࣌ؒ ͭͷ࣌ؒ࣠Λผʑʹ؅ཧ͢Δඞཁੑ ˰#J5FNQPSBMEBUBNPEFM

Slide 54

Slide 54 text

CJUFNQPSBMEBUBNPEFM U U

Slide 55

Slide 55 text

*% ໾৬ ։࢝ ऴྃ ௥Ճ ࡟আ    㱣  㱣 ೖࣾ ༗ޮظؒ γεςϜతͳظؒ CJUFNQPSBMEBUBNPEFM

Slide 56

Slide 56 text

CJUFNQPSBMEBUBNPEFM ෦௕ʹঢ֨ #FGPSF "GUFS  ʿ ʔ  ʿ ʔ ʔ  ෦௕ ࡟আ

Slide 57

Slide 57 text

*% ໾৬ ։࢝ ऴྃ ௥Ճ ࡟আ    㱣  㱣ˠ ෦௕ʹঢ֨ CJUFNQPSBMEBUBNPEFM

Slide 58

Slide 58 text

*% ໾৬ ։࢝ ऴྃ ௥Ճ ࡟আ    㱣  㱣ˠ      㱣  ෦௕  㱣  㱣 ෦௕ʹঢ֨ CJUFNQPSBMEBUBNPEFM

Slide 59

Slide 59 text

CJUFNQPSBMEBUBNPEFM ୀࣾ #FGPSF  ʿ  "GUFS  ࡟আ

Slide 60

Slide 60 text

*% ໾৬ ։࢝ ऴྃ ௥Ճ ࡟আ    㱣        㱣  ෦௕  㱣  㱣ˠ ୀࣾ CJUFNQPSBMEBUBNPEFM

Slide 61

Slide 61 text

*% ໾৬ ։࢝ ऴྃ ௥Ճ ࡟আ    㱣        㱣  ෦௕  㱣  㱣ˠ  ෦௕    㱣 ୀࣾ CJUFNQPSBMEBUBNPEFM

Slide 62

Slide 62 text

CJUFNQPSBMEBUBNPEFM #FGPSF  ʮdͷظؒ͸ʰ܎௕ʱͩͬͨʯ͜ͱ͕ൃ֮   "GUFS    

Slide 63

Slide 63 text

*% ໾৬ ։࢝ ऴྃ ௥Ճ ࡟আ    㱣        㱣ˠ  ෦௕  㱣    ෦௕    㱣 ʮdͷظؒ͸ʰ܎௕ʱͩͬͨʯ͜ͱ͕ൃ֮ CJUFNQPSBMEBUBNPEFM

Slide 64

Slide 64 text

*% ໾৬ ։࢝ ऴྃ ௥Ճ ࡟আ    㱣        㱣ˠ      㱣  ՝௕    㱣  ෦௕  㱣    ෦௕    㱣 ʮdͷظؒ͸ʰ܎௕ʱͩͬͨʯ͜ͱ͕ൃ֮ CJUFNQPSBMEBUBNPEFM

Slide 65

Slide 65 text

Α͘Θ͔Γ·ͨ͠Ͷ CONFIDENTIAL

Slide 66

Slide 66 text

4NBSU)3ຊମ ʹ3VCZPO3BJMTͷ ɹϞϊϦγοΫΞϓϦέʔγϣϯ "DUJWF3FDPSEͰͳΜͱ͔͢Δඞཁ͕͋Δ ͓͞Β͍ɿ4NBSU)3͸3P3ͰͰ͖͍ͯ·͢

Slide 67

Slide 67 text

CONFIDENTIAL "DUJWF3FDPSE#J5FNQPSBM

Slide 68

Slide 68 text

࢓૊Έ *% ໾৬ ։࢝ ऴྃ ௥Ճ ࡟আ    㱣        㱣  ෦௕  㱣  㱣 JE CJUFNQPSBM@JE QPTJUJPO WBMJE@GSPN WBMJE@UP DSFBUFE@BU EFMFUFE@BU     㱣         㱣   ෦௕  㱣  㱣 σʔλϕʔεͰදݱ

Slide 69

Slide 69 text

࢓૊Έ JE CJUFNQPSBM@JE QPTJUJPO WBMJE@GSPN WBMJE@UP DSFBUFE@BU EFMFUFE@BU     㱣   JEʜ3BJMTඪ४ CJUFNQPSBM@JE
 ʜૢ࡞ର৅ΛҰҙʹ͢ΔͨΊͷ*%

Slide 70

Slide 70 text

࢓૊Έ JE CJUFNQPSBM@JE QPTJUJPO WBMJE@GSPN WBMJE@UP DSFBUFE@BU EFMFUFE@BU     㱣   WBMJE@GSPN WBMJE@UPʜ༗ޮظؒ DSFBUFE@BU EFMFUFE@BUʜγεςϜظؒ

Slide 71

Slide 71 text

Ϟσϧʹ"3#J5FNQPSBM༻Λ༻ҙ 
 ./bin/rails generate model User \ name:string \ bitemporal_id:integer \ valid_from:datetime \ valid_to:datetime \ deleted_at:datetime ར༻ํ๏

Slide 72

Slide 72 text

࢓૊Έ irb(main):002:0> User.find(1) User Load (0.8ms) SELECT "users".* FROM "users" 
 WHERE "users"."deleted_at" IS NULL 
 AND "users"."valid_from" <= '2019-03-10 07:40:32.238952' 
 AND "users"."valid_to" > '2019-03-10 07:40:32.238952'
 AND "users"."bitemporal_id" = $1 
 LIMIT $2 
 [["bitemporal_id", 1], ["LIMIT", 1]] ҎԼΛࣗಈతʹ࣮ࢪ
 ɾ࡟আ͞Ε͍ͯͳ͍͔ͷ൑ఆ ɾ༗ޮ͔Ͳ͏͔ͷ൑ఆ
 ɾJEΛCJUFNQPSBM@JEʹಡΈସ͑

Slide 73

Slide 73 text

ݱ࣌఺ͷσʔλʹΞΫηε͢ΔͨΊͷ ΠϯλʔϑΣʔε͸΄΅௨ৗͷ"DUJWF3FDPSEͱಉ͡ ར༻ํ๏ Company.where(city: 'Tokyo') user = User.find(123) user.destroy

Slide 74

Slide 74 text

͍͔ͭ͘ͷϝιουΛ௥Ճ ɾWBMJE@BU ར༻ํ๏ # 1೥લͷσʔλʹΞΫηε Company.valid_at(1.year.ago).where(city: 'Tokyo') # ϦϨʔγϣϯ΋ḷΕΔʂ company = Company.valid_at(1.year.ago).take company.employees # 1೥લͷैۀһ৘ใΛऔಘ

Slide 75

Slide 75 text

͍͔ͭ͘ͷϝιουΛ௥Ճ ɾJHOPSF@WBMJE@EBUFUJNF ར༻ํ๏ # ͋ΔϢʔβʔͷมߋཤྺΛੜ੒
 User.ignore_valid_datetime
 .where(bitemporal_id: param[:id]) .order(:valid_from)

Slide 76

Slide 76 text

CONFIDENTIAL ಋೖ

Slide 77

Slide 77 text

"3#J5FNQPSBMΛಋೖͯ͠Έ ͯΘ͔ͬͨ͜ͱʜ CONFIDENTIAL

Slide 78

Slide 78 text

͍Ζ͍ΖͭΒ͍ʂʂʂ CONFIDENTIAL

Slide 79

Slide 79 text

ͭΒ͍ϙΠϯτʢʣϢχʔΫ੍໿ ༗ޮظؒ͸ॏͳΓ߹Θͳ͍͸͕ͣʜʜ

Slide 80

Slide 80 text

ͭΒ͍ϙΠϯτʢʣϢχʔΫ੍໿ ॏͳͬͯΔ

Slide 81

Slide 81 text

Ͱ ϢχʔΫʹͳΔ͸͕ͣɺͳ͔ͥ༗ޮظؒͷ ॏͳΔσʔλ͕ੜ·Εͨ ظؒॏෳνΣοΫ༻ΧελϜόϦσʔγϣ ϯ͸࡞ͬͯ͋ͬͨΜ͚ͩͲʜʜ ͭΒ͍ϙΠϯτʢʣϢχʔΫ੍໿

Slide 82

Slide 82 text

˰%#ϨϕϧͰ੔߹ੑΛ୲อͨ͠΄͏͕͍͍ ͭΒ͍ϙΠϯτʢʣϢχʔΫ੍໿ -- ॏͳΓνΣοΫ (PostgreSQL) ALTER TABLE users ADD EXCLUDE USING GIST (bitemporal_id WITH =, tsrange(valid_from, valid_to) WITH &&, COALESCE(deleted_at, '9999-12-31 00:00:00')WITH =);

Slide 83

Slide 83 text

ɾ%#্ͷओΩʔAJEAͷ·· ɾ࣮ࡍͷΞΫηε࣌͸ ɹ ɹෳ߹৚݅ ɾΠϯελϯεʹJE͢ΔͱCJUFNQPSBM@JE͕ฦΔ ͜ΕͰ֓Ͷ໰୊ͳ͍ͷ͕ͩʜʜ ͭΒ͍ϙΠϯτʢʣϓϥΠϚϦʔΩʔ

Slide 84

Slide 84 text

ੜͷओΩʔΛ಺෦Ͱ࢖͍ͬͯΔ Ұ෦ͷ(FN͕յΕΔ ɹɾBDUT@BT@MJTU BODFTUSZ 
 ɹɹBDUJWFSFDPSEJNQPSU ˰ϞϯΩʔύον ɹPSఘΊΔʜʜʢ࢖Θͳ͍Α͏मਖ਼ʣ ͭΒ͍ϙΠϯτʢʣϓϥΠϚϦʔΩʔ

Slide 85

Slide 85 text

࡞੒೔ιʔτɺߋ৽೔ιʔτ
 ɾϨίʔυ͕௥Ճ͞ΕΔҰํ ɾաڈʹ͔͞ͷ΅ͬͯσʔλΛมߋͰ͖Δ ௨ৗͷ֓೦่͕յ ˰ཁ݅ʹԠͯ͡దٓௐ੔ ͭΒ͍ϙΠϯτʢʣιʔτ

Slide 86

Slide 86 text

ɾ҉໧తͳιʔτ ɹGJSTU MBTU͸҉໧తʹ ɹ03%&3#:\QSJNBSZ@LFZ^͍ͯ͠Δ ˰ཁ݅ʹԠͯ͡ௐ੔ ˞3BJMT͔Β͸JNQMJDJU@PSEFS@DPMVNOͰ ɹ੍ޚՄೳ ͭΒ͍ϙΠϯτʢʣιʔτ

Slide 87

Slide 87 text

61%"5& %&-&5&Ͱ΋Ϩίʔυ͕ੜ·ΕΔ ˰΋ͱ΋ͱγϟʔσΟϯά͍ͯ͠ΔͷͰɺ ɹߜΓࠐΈൣғ͸ݶఆ͞Ε͍ͯͨ ɹʰ4NBSU)3σʔλϕʔεҠߦϓϩδΣΫτͷཪଆʱ ˰ΠϯσοΫε͕ޮ͍ͯΔ͠ࠓͷͱ͜Ζେৎ෉ͦ͏ ɹϠό͘ͳ͖ͬͯͨΒߟ͑Α͏ʜʜ ͭΒ͍ϙΠϯτʢʣੑೳ

Slide 88

Slide 88 text

"DUJWF3FDPSEͷόʔδϣϯΞοϓ௥ै 3BJMTେৎ෉͔ͳʜʜ ͭΒ͘ͳΔ͔΋͠Εͳ͍ϙΠϯτ

Slide 89

Slide 89 text

CONFIDENTIAL ݁Ռ

Slide 90

Slide 90 text

࣌఺ΞΫηε

Slide 91

Slide 91 text

࣌఺ΞΫηε

Slide 92

Slide 92 text

࣌఺ΞΫηε

Slide 93

Slide 93 text

มߋཤྺ

Slide 94

Slide 94 text

มߋཤྺ

Slide 95

Slide 95 text

αΫηεʂʂʂ CONFIDENTIAL ʢཤྺ৘ใͷߋ৽ʹ͍ͭͯ͸΋͏গʑ͓଴ͪԼ͍͞ʜʜʣ

Slide 96

Slide 96 text

CONFIDENTIAL ࠷ޙʹ

Slide 97

Slide 97 text

Έͳ͞Μ΋ "DUJWF3FDPSE#J5FNQPSBMΛ ࢖͍ͨ͘ͳ͖ͬͯͨΜ͡Όͳ͍ Ͱ͠ΐ͏͔

Slide 98

Slide 98 text

͓΍ʜʜ

Slide 99

Slide 99 text

"DUJWF3FDPSE#J5FNQPSBM͸ ຊ೔ΑΓ044Ͱ͢ʂ 13͓଴͓ͪͯ͠Γ·͢ʂʂ

Slide 100

Slide 100 text

CONFIDENTIAL ͓͠·͍

Slide 101

Slide 101 text

ɾ#JUFNQPSBM%BUB5IFPSZBOE1SBDUJDF 5PN+PIOTUPO  ɹ*4#/ ɾཤྺςʔϒϧ ɹIUUQTVTFSpSTUJLZVDPKQFOUSZIJTUPSZUBCMF ɾ5FNQPSBMEBUBCBTF8JLJQFEJB ɹIUUQTFOXJLJQFEJBPSHXJLJ5FNQPSBM@EBUBCBTF#JUFNQPSBM@SFMBUJPOT ɾ5FNQPSBM%BUB5JNF5SBWFMJO1PTUHSF42- ɹIUUQTXJLJQPTUHSFTRMPSHJNBHFT'PTEFN1PTUHSFTRM5FNQPSBMQEG ɾσʔλཤྺ؅ཧͷͨΊͷςϯϙϥϧσʔλϞσϧͱ3FMBEPNPͷ঺հ ɹIUUQTXXXTMJEFTIBSFOFUJUPIJSPKKVHDDDTQSJOHCJUFNQPSBMEBUBNPEFMJOHBOESFMBEPNP ɾ1BQFS5SBJM͸Ͳ͏΍ͬͯ"DUJWF3FDPSEͷόʔδϣϯ؅ཧΛ͍ͯ͠Δ͔ ɹIUUQTRJJUBDPNZVLV@UJUFNTDFFDCB ࢀߟࢿྉ

Slide 102

Slide 102 text

ɾ4QSFBETIFFUDFMMWFDUPS
 ɹIUUQGSFFWFDUPSDPWFDUPSJDPOTUPPMTBOE VUFOTJMTTQSFBETIFFUDFMMIUNM ɾIUUQQJDUPHSBNDPN ૉࡐ