Slide 1

Slide 1 text

ӋԍӏӑӞԍӠӧӜӏӾʂҍ҅ѥ҈ ӬӆӏӮװɒױґҭѭѷҵ

Slide 2

Slide 2 text

ѵѵ҉ѥѧӧӜӏԍӇҊґ

Slide 3

Slide 3 text

Ό਺ҐӄـҴΌ਺ҐӦـӡҍðҬƾ҈ҁѥ
 Ҋѥѧī୊

Slide 4

Slide 4 text

׏ֿ ׏׀ ׏ׁ ׏ׅ ׏׆ ׏ׇ ׏ֿ־ ׏ֿ ׏׀ ׏ׁ ׏ׂ ׏׃ ׏ׄ ӄـ Ӧـӡ

Slide 5

Slide 5 text

׏ֿ ׏׀ ׏ׁ ׏ׅ ׏׆ ׏ׇ ׏ֿ־ ׏ֿ ׏׀ ׏ׁ ׏ׂ ׏׃ ׏ׄ ˅૝ˤҍґѵѧҌ҆҈ҝѹѥ Ӧـӡ

Slide 6

Slide 6 text

ѵҮѮ҉ѯҭҊ ؆!׌ҐӏӼـӟҺԍӇ ؆ӄӼӜӏӾҐåࢄشࠓ´҆҈ҭҥ҅ ؆Ҍҍѭѣҭҥ҅ҴҌҵѭͮѥײѺҍåð ……ҊѭҠѣѥүѥүҊ¸ê

Slide 7

Slide 7 text

€˕ӏԍӯԃҌȠʂ פӺӐӾԅʂץ

Slide 8

Slide 8 text

׏ֿ ׏׀ ׏ׁ ׏ֿ ׏׀ ׏ׁ %3 = 1 %3 = 2 %3 = 0 ׏ׂ %3 = 1 ӺӐӾԅʂ Ӧـӡ਺Ґ৒²ҴҊҭ ׏׃ ׏ׄ %3 = 2 %3 = 0

Slide 9

Slide 9 text

ӺӐӾԅʂ׋ ؆ÅҬѮχѵҫҌѱ҈ͮѷѿѧ ؆ӏԍӯԃ ؆ӦـӡҴϟՃѻҭҊѯҍŖő

Slide 10

Slide 10 text

ӺӐӾԅʂ ׏ֿ ׏׀ ׏ׁ ׏ֿ ׏׀ ׏ׁ %3 = 1 %3 = 2 %3 = 0 ׏ׂ %3 = 1 ׏׃ ׏ׄ %3 = 2 %3 = 0

Slide 11

Slide 11 text

ӺӐӾԅʂ ׏ׂ ׏ֿ ׏׀ ׏ׁ ׏ֿ ׏׀ ׏ׁ %3 = 1 %3 = 2 %3 = 0 ׏ׂ %3 = 1 ׏׃ ׏ׄ %3 = 2 %3 = 0

Slide 12

Slide 12 text

׏ֿ ׏׀ ׏ׁ ׏ֿ ׏׀ ׏ׁ %4 = 1 %4 = 2 %4 = 3 ׏ׂ %4 = 0 ӺӐӾԅʂ ׏ׂ ׏׃ ׏ׄ %4 = 1 %4 = 2 ӦـӡҴϟՃѻҭҊѯҍŖő׎׎׎ ׏׀¦߱ѻқ҈҉ȳѯȈѩѮˠੜ

Slide 13

Slide 13 text

פӺӐӾԅʂץґ ࣮ΆѮ؆୯҂ѮӦـӡҐϟՃ؏࡟আѮŖő

Slide 14

Slide 14 text

ӋԍӏӑӞԍӠӧӜӏӾʂ • @_LE@YJFYF[@Q׌،TSZLZ[FS[ @ZKLSJ@SE@SETR YFFZ׋LZ[YLC\[FE@DKLSJYT[TDTQZITYFQLF_LSJ T[ WT[ZTS[KF"TYQE"LEF"FC،׮ׇׇֿׅׯ • ࣮ΆҊѹ҈ґFRD@DKFEҐҁңҐF[@R@ѮȵĚ
 K[[WZ׋זזJL[K\CאDTRזזPF[@R@ • SJLSa׍W@DKFY@IILDFY_FYҤ࠾ˉ

Slide 15

Slide 15 text

ӋԍӏӑӞԍӠӧӜӏӾʂ׋ ؆ӧӜӏӾВ਺ґ€ɠҍåƖѻҭґѼ ؆ӧӜӏӾВ਺ҴԂԍӇ…ҍѹ҈࣮Ά

Slide 16

Slide 16 text

׏ֿ ׏׀ ׏ׁ ӋԍӏӑӞԍӠӧӜӏӾʂ
 Ӧـӡ׍ӄـҐѿҮҀҮҴęѺӧӜӏӾ̌БҍࣹӨ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ӧӜӏӾ̌Б

Slide 17

Slide 17 text

׏ֿ ׏׀ ׏ׁ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ӧӜӏӾ̌Б ׏ֿ ׏׀ ׏ׁ ׏ׂ ׏׃ ׏ׄ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ׯ ׯ ׯ ӋԍӏӑӞԍӠӧӜӏӾʂ
 Ӧـӡ׍ӄـҐѿҮҀҮҴęѺӧӜӏӾ̌БҍࣹӨ

Slide 18

Slide 18 text

׏ֿ @ZK׮ ׯ ׏ֿ ׏׀ ׏ׁ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ۙѥÃҴબ୒ ׏ֿ ׏׀ ׏ׁ ׏ׂ ׏׃ ׏ׄ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ׯ ׯ ׯ ֿ˕…ҐÃҴҊҭ ؼ ӧӜӏӾ̌Б ӋԍӏӑӞԍӠӧӜӏӾʂ
 Ӧـӡ׍ӄـҐѿҮҀҮҴęѺӧӜӏӾ̌БҍࣹӨ

Slide 19

Slide 19 text

ӋԍӏӑӞԍӠӧӜӏӾʂ׋ ؆ӧӜӏӾВ਺ґ€ɠҍåƖѻҭґѼ
 ؕҌҐ҉ÅҫҌѥ ؆ȳѯȈҰҭҐґӧӜӏӾ̌БҐ€϶҂ѳҐґѼ
 ؕҌҐ҉ϟՃѹҁҊѯҐӘӹـӐѮƀҌѥ

Slide 20

Slide 20 text

׏ֿ ׏׀ ׏ׁ ϟՃѹҁҊѯҐӘӹـӐѮƀҌѥ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ӧӜӏӾ̌Б ׏ֿ ׏׀ ׏ׁ ׏ׂ ׏׃ ׏ׄ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ׯ ׯ ׯ

Slide 21

Slide 21 text

ϟՃѹҁҊѯҐӘӹـӐѮƀҌѥ ӧӜӏӾ̌Б ׏ֿ ׏׀ ׏ׁ ׏ׂ ׏׃ ׏ׄ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ׯ ׯ ׯ ׏ֿ ׏׀ ׏ׁ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ׏ׂ @ZK׮ ׯ ׏ׂҴϟՃ

Slide 22

Slide 22 text

ϟՃѹҁҊѯҐӘӹـӐѮƀҌѥ ӧӜӏӾ̌Б ׏ֿ ׏׀ ׏ׁ ׏ׂ ׏׃ ׏ׄ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ׯ ׯ ׯ ׏ֿ ׏׀ ׏ׁ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ۙѥÃҴબ୒ ׏ׂ @ZK׮ ׯ ȳѯȈҰ҆ҁҐґ׏ׄ҂ѳ׎

Slide 23

Slide 23 text

ӋԍӏӑӞԍӠӧӜӏӾʂ׋ ؆ÅҫҌѥ ؆ϟՃѹҁҊѯҐӘӹـӐѮƀҌѥ

Slide 24

Slide 24 text

ӧӜӏӾ̌Б ׏ֿ @ZK׮ ׯ ˅૝ˤҍґ ؟ֿذ׀׋

Slide 25

Slide 25 text

˅૝ˤҍґ ӧӜӏӾ̌Б ׏ֿ ׏׀ @ZK׮ @ZK׮ ׯ ׯ ׏׀ҴϟՃѻҭҊ ؟ֿذ׀׋׃־أ

Slide 26

Slide 26 text

ӧӜӏӾ̌Б ׏ֿ ׏׀ @ZK׮ @ZK׮ ׯ ׯ ׏ׁ @ZK׮ ׯ ˅૝ˤҍґ ؟׀ذׁ׋׀׃أ ׏ׁҴϟՃѻҭҊ

Slide 27

Slide 27 text

ӧӜӏӾ̌Б ׏ֿ ׏׀ @ZK׮ @ZK׮ ׯ ׯ ׏ׁ @ZK׮ ׯ ׏ׂ @ZK׮ ׯ ˅૝ˤҍґ ؟ׁذׂ׋׀׃أ ׏ׂҴϟՃѻҭҊ

Slide 28

Slide 28 text

ӋԍӏӑӞԍӠӧӜӏӾʂ׋ ؆ÅҫҌѥ ؆ϟՃѹҁҊѯҐӘӹـӐѮƀҌѥ

Slide 29

Slide 29 text

ӋԍӏӑӞԍӠӧӜӏӾʂҐ࣮Ά
 ׮F[@R@ҐńĘׯ

Slide 30

Slide 30 text

# ϋογϡؔ਺͸32bit unsigned intͷϋογϡ஋Λฦ͢
 # CRC32, MD5ͷ্Ґ32bitͳͲͰ࣮૷
 func hash(key string) uint32 { ... } # ϊʔυͷϋογϡ஋Λܭࢉ for _, node := range nodes { # ͻͱͭͷϊʔυຖʹ160ݸͷϋογϡΛܭࢉ for i := 0; i < 160; i++ { k := fmt.Sprintf(“%s-%d”, node, i)
 
 # ϊʔυ໊ͱϋογϡ஋ͷϖΞΛ௥Ճ continuum.add(node, hash(k)) } } # ϋογϡ஋Ͱιʔτ͓ͯ͘͠ sort.Sort(continuum) ֿאӦـӡӶӜӯҐܭࢉ

Slide 31

Slide 31 text

ֿאӦـӡӶӜӯҐܭࢉ ӧӜӏӾ̌Б ׏ֿ @ZK׮ ׯ ֿ҅ҐӦـӡҍରѹ
 Ό਺ҐӧӜӏӾҴܭࢉ
 ذӧӜӏӾܭࢉҍҩҭÅҬҴЕɦ ؕ׮׀־־¿ѱҫѥ҉ůŲׯ

Slide 32

Slide 32 text

# ϋογϡ஋Ͱιʔτ͓͚ͯ͠͹ೋ෼୳ࡧͰ୳ࡧͰ͖Δ
 func search(key string) string { v := hash(key) i, j := 0, n for i < j { h := i + (j-i)/2 if (continuum.values[i] > v) { i = h + 1 } else { j = h } } return continuum.nodes[i] } ׀אӧӜӏӾҐ୳ࡧ

Slide 33

Slide 33 text

׀אӧӜӏӾҐ୳ࡧ ӧӜӏӾ̌Б _ @ZK׮ ׯ ׏ֿ ׏׀ ׏ׁ @ZK׮ @ZK׮ @ZK׮ ׯ ׯ ׯ ׏ׂ @ZK׮ ׯ ™å୳ࡧ҉€˕ۙѥӧӜӏӾҴʹŲ

Slide 34

Slide 34 text

ҠҊң
 ׮ӋԍӏӑӞԍӠӧӜӏӾʂׯ ؆ÅҫҌѥ
 ؕӧӜӏӾВ਺Ҋѹ҈ґ׃…¯ׁ׀CL[׌ׁ׀׌!؆ֿ̙ ؆ϟՃѹҁҊѯҐӘӹـӐѮƀҌѥ
 ؆࣮ΆҤӏԍӯԃ