Riak рдПрдХ NoSQL рд╕рдорд╛рдзрд╛рди рд╣реИ, рдИрдорд╛рдирджрд╛рд░ DHT (рдХреБрдВрдЬреА / рдореВрд▓реНрдп рднрдВрдбрд╛рд░рдг) рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред
рдПрдХ рд╡рд┐рддрд░рд┐рдд рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рджреЛрдиреЛрдВ рд╣реИрдВред DHT рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдорд╛рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
client a: def o-value = DHT.get("some-key");
client a: def a-value = changeValue(o-value);
client b: def o-value = DHT.get("some-key");
client a: DHT.put("some-key", a-value);
client b: def b-value = changeValue(o-value);
client b: DHT.put("some-key", b-value);
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдмреА рдиреЗ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рднреА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ (рди рддреЛ рдП, рди рд╣реА рдмреА, рдФрд░ рди рд╣реА рдЬреЛ рдЗрд╕ рдХреБрдВрдЬреА рдкрд░ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ)ред
рдЪреВрдВрдХрд┐ рдХрдИ NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ DHT рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рд╡реЗ рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдВрдЪ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MongoDB рдПрдХ
рддреБрд▓рдирд╛-рдФрд░-рд╕реНрд╡реИрдк рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (рдорд╛рди) рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ "рдкреВрд░реНрд╡рдЬ" рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдкреВрд░реНрд╡рдЬ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрджреНрдпрддрди рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ: рдЕрджреНрдпрддрдирдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - рдПрд╕рдЯреАрдПрдо рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╢рд╛рд░реНрдХ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЦрд░рд╛рдм рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд╕рд╛рдеред
рд░рд┐рдЖрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рддрд░рд╣ рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдВрдЪ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдпрд╣, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛, рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рдВрдЪ рдореЗрдВ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ, рдорд░реНрдЬ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдЕрд╕реНрдерд╛рдпреА рдЕрд▓рдЧрд╛рд╡ (рд╡рд┐рднрд╛рдЬрди рд╕рд╣рд┐рд╖реНрдгреБрддрд╛: рдорд╢реАрдиреЛрдВ рдХрд╛ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рднрд╛рдЧ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХрдЬреБрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ)ред
Riak рдЕрдзрд┐рдХ рд╡рд┐рдХрд╛рд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛ рдХреА рдорд╛рдкрдиреАрдпрддрд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрд▓реЗрдЦ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ рдХрд┐ рдареЗрда рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд░рд┐рдЖрдХ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдмреНрд▓реЙрдЧ
рд░рд┐рдЖрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдкрд╣рд▓реЗ рдЖрджрд┐рдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреА рдХреЗрд╡рд▓ рдПрдХ рд╕реВрдЪреАред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рдмреНрд▓реЙрдЧ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреА рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░реЗ рдкреЛрд╕реНрдЯ рдХреЛ рдПрдХ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░реАрдб рдСрдкрд░реЗрд╢рди рдУ (1) рд╕реЗ рдЧреБрдЬрд░реЗрдЧрд╛ред рдЖрдЗрдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ:
public class Post { public static class Comment implements Comparable<Comment> { public String text; public int ts;
рдЕрдм рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ "рдПрдХ рд╕рд╛рде" рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реА:
client a: def o-post = DHT.get("post/13");
client a: def a-post = addComment(o-value, " , ");
client b: def o-post = DHT.get("some-key");
client a: DHT.put("post/13", a-post);
client b: def b-post = addComment(o-post, " ");
client b: DHT.put("post/13", b-post);
рдЕрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдЖрдИрдбреА "рдкреЛрд╕реНрдЯ / 13" рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ; рдФрд░ рдЗрд╕ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рджреЛрдиреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЧрд▓рд╛ рдШреЛрдВрдЯрдирд╛ рд╣реЛрдЧрд╛ред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдкреЛрд╕реНрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА "рд╢рд╛рдЦрд╛" рд╕реЗ рдПрдХ рдкреЛрд╕реНрдЯ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдХреЗрд╡рд▓ рдЬреЛрдбрд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рджреЛрдиреЛрдВ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгреА рд╕реВрдЪреА рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрд╕рд░реНрдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЪреБрдирдиреЗ рдФрд░ рдЙрдкрд╕рд░реНрдЧ рд╕реЗ рдПрдХ рдирдИ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдкрд╣рд▓реА рд╕реВрдЪреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрдзрди рдФрд░ рджреВрд╕рд░реА рд╕реВрдЪреА рдореЗрдВ рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрддред рдорд░реНрдЬ рдСрдкрд░реЗрд╢рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:
public static Post merge(Post a, Post b) { Post c = new Post(); c.text = a.text; c.comments = Mergers.mergeLists(a.comments, b.comments); return c; }
рдорд░реНрдЬрд▓рд┐рд╕реНрдЯ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
public static <T extends Comparable<T>> List<T> mergeLists(List<T> a, List<T> b) { List<T> result = new ArrayList<T>(); List<T> rest = new ArrayList<T>(); int max = Math.min(a.size(), b.size()); int i=0;
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдорд░реНрдЬрд▓рд┐рд╕реНрдЯрд░реНрд╕ рд╕реЗрдЯ рдХреЗ рдПрдХ рд╕рдВрдШ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдХреБрдЫ рддрддреНрд╡ рдПрдХ рдпрд╛ рдмреА рдореЗрдВ рдерд╛, рддреЛ рдпрд╣ рдкрд░рд┐рдгрд╛рдореА рд╕реВрдЪреА рдореЗрдВ рднреА рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╡рд┐рд▓рдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрдм рд╣рдордиреЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрддреЗ рд╣реБрдП рд░рд┐рдЖрдХ рдореЗрдВ рд╕реВрдЪреА рд▓рд┐рдЦрдирд╛ рд╕реАрдЦ рд▓рд┐рдпрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ рдкрджреЛрдВ рдХреЛ рдбрдЧрдордЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдлреЛрд▓реНрдб рдХреЙрдореНрдмрд┐рдиреЗрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдорд░реНрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЕрд▓рд░реНрдЯ (рд╕рдВрджреЗрд╢, рдЕрдкрдбреЗрдЯ)
рдЕрдЧрд▓рд╛ рдЖрджрд┐рдо рдЬрд┐рд╕реЗ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рд╡рд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреА рд╕реВрдЪреА рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рд╣рдЯрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрдЧреАред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдпрд╣ рдЕрдкрдиреЗ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рддрддреНрд╡ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдмрд╣реБрдд рд╕рд╢рд░реНрдд рд╣реИ)ред рдЪреВрдВрдХрд┐ рд╕реВрдЪреА рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреВрд░реА рд╕реВрдЪреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдПрдХ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред
рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реВрдЪрдирд╛рдПрдВ рдЗрд╕ рдЖрджрд┐рдо рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрд┐рд░рддреА рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдШрдЯрдирд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдШрдЯрдирд╛ рдХреА рд╕реВрдЪрдирд╛ рдмрд╣реБрдд рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ; рджреВрд╕рд░реЗ, рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдкреБрд░рд╛рдиреА рдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдпрджрд┐ рдЙрд╕рдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ; рддреАрд╕рд░рд╛, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд┐рдЫрд▓реА рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд╣рд╛рдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдПрдХ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рджреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: "рд╕реВрдЪрдирд╛" рдХреА рдПрдХ рд╕реВрдЪреА рдФрд░ рд╣рдЯрд╛рдП рдЧрдП "рд╕реВрдЪрдирд╛" рдХреА рд╕реВрдЪреАред рдорд░реНрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рдВрдмрдВрдзрд┐рдд рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░, рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реВрдЪреА рдореЗрдВ рд░рд╣реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рдЬреЛрдбрд╝реЗ рдЧрдП рд▓реЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ (рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд┐рд▓рдп рдХреЗ рдмрд╛рдж, рд╣рдЯрд╛рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЛ рдШрдЯрд╛рдпрд╛ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛)ред рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реА рд╕реВрдЪреА рдЕрд╕реАрдорд┐рдд рд░реВрдк рд╕реЗ рдмрдврд╝рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдЖрд╡рд╢реНрдпрдХ рдЖрджрд┐рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрди рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ: рдпрджрд┐ рдЬреЛрдбрд╝реА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдЕрдзрд┐рдХрддрдо рд╣реЛ рдЧрдИ рд╣реИ - рд╣рдо рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рд╣рдЯрд╛рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдмрдврд╝реА рд╣реИ - рд╣рдо рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдФрд░ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ:

рдкреНрд░рддреНрдпреЗрдХ рдРрдб, рдбрд┐рд▓реАрдЯ рдФрд░ рдорд░реНрдЬ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд░реИрдо рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдХреЗ, рд╣рдордиреЗ рдХреБрдЫ рдЦреЛ рджрд┐рдпрд╛ рдФрд░, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ред рдЪрд▓реЛ рдЗрд╕ рдкрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ (рдЬрдм рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдиреБрдХрд╕рд╛рди рдПрдХ рдирд┐рдпрдорд┐рдд рдорд╛рдорд▓рд╛ рд╣реИ), рдХреЗрд╡рд▓ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рдореЛрдЯ рдЕрд▓рд░реНрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рдЗрд╕ рд╕рдВрдХреЗрддрдХ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдореЙрдбрд▓ рдХрд┐рдпрд╛ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдИред рдпрд╣ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реВрдЪреА рдХреА рд▓рдВрдмрд╛рдИ рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рдЙрддреНрдкрд╛рдж рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реИ, рдореИрдВрдиреЗ рдЬрд╛рдБрдЪ рдХреА), рд╣рдо рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреБрдВрдЬреА рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдХреБрдЫ рд░реЗрдЦрд╛рдВрдХрди рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рдЧрддрд┐рдХреА рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕реВрдЪреА рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд
рдЧреНрд░рд╛рдл рд╕реВрдЪреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕реВрдЪреА рдореЗрдВ рдореМрдЬреВрдж рддрддреНрд╡реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд░рд┐рдореЛрдЯ "рдЕрд▓рд░реНрдЯ" рдирдП рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (0.8 рдФрд░ 2), рдЬреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 8 рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 20 рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдиреАрдЪреЗ рд▓рд┐рдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдЙрддрдирд╛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИред

рдХреБрдВрдЬреА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд
рдЧреНрд░рд╛рдл рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реВрдЪреА рд▓рдВрдмрд╛рдИ (рдХреНрд░рдорд╢рдГ 30 рдФрд░ 130 рддрддреНрд╡реЛрдВ) рдХреЗ рд╕рд╛рде рдкреНрд░рдореБрдЦ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

1% рддреНрд░реБрдЯрд┐ рдХреНрд╖реЗрддреНрд░
рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдмреНрд╕рд┐рд╕реНрд╕рд╛ рдХреЗ рд╕рд╛рде рдкреНрд▓реЙрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рд╛рд▓ рд░реЗрдЦрд╛ рдорд╛рди 1 рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ; рд╕рдордиреНрд╡рдп рд╕реВрдЪреА рдХреА рд▓рдВрдмрд╛рдИ рд╣реИ; рд▓рд╛рд▓ рд░реЗрдЦрд╛рдПрдВ 100, 200 рдФрд░ 300 рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдХрд╛рд▓рд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдХреНрд╖реЗрддреНрд░ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ 1% рд╕реЗ рдХрдо рд╣реИред

рдХреНрдпреЛрдВ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдЕрдиреБрд░реЛрдз рдЙрддрдирд╛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЗрд╡рд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Google + рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдЕрдиреБрд░реЛрдз рд╕рднреА Google рдХреЛ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЕрдиреБрдорд╛рдирд┐рдд рдЖрд╡реГрддреНрддрд┐ред
рд╕реНрдЯреНрд░реАрдо (рдЯреНрд╡рд┐рдЯрд░ рдкрд░ VKontakte рдпрд╛ рдЯреЗрдк рдкрд░ рджреАрд╡рд╛рд░)
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЕрдВрддрд┐рдо рдкреИрдЯрд░реНрди рдПрдХ рдмрдбрд╝реА рд╕реВрдЪреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрдВрдд рддрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЕрдВрдд рд╕реЗ рдФрд░ рд╢реБрд░реБрдЖрдд рд╕реЗ рджреЛрдиреЛрдВ рд░рд┐рдХреЙрд░реНрдб рдкрдврд╝реЗрдВ, рдФрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрдИ рд░рд┐рдХреЙрд░реНрдб рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪреА рд╕реЗ рдмрд╣реБрдд рдХрдо рд╡рд┐рд▓реЛрдкрди рд╣реЛрдВрдЧреЗред
рдпрд╣ рдЖрджрд┐рдо рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдлрд╝реАрдб рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рджреАрд╡рд╛рд░реЛрдВ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд┐рдЫрд▓реА рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реА рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рдХрдИ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рд╕реЗрд╡рд╛ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реА, рдЬреЛ рд╕реВрдЪреА рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдбреЗрдЯрд╛ рдЪрдВрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реВрдЪреА рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХрд╛ рдЦрдВрдб рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджрд┐рдирд╛рдВрдХ рдореЙрдбрд▓ рдФрд░ рд╕рд╛рде рд╣реА рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдорд░реНрдЬ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
class Info { public String key; public String prefix; public int lastChunk = 0; public String getChunkKey(int chunk) { return prefix + chunk; } public Info mergeWith(Info brother) { Info info = new Info(); info.key = key; info.prefix = prefix; info.lastChunk = Math.max(lastChunk, brother.lastChunk); return info; } } class Chunk<T extends Comparable<T>> { public String key; List<T> added = new ArrayList<T>(); List<T> deleted = new ArrayList<T>(); public void add(T obj) { added.add(obj); } public void delete(T obj) { deleted.add(obj); } public Iterable<T> getData() { List<T> data = new ArrayList<T>(added); data.removeAll(deleted); return data; } public Chunk<T> mergeWith(Chunk<T> brother) { Chunk<T> chunk = new Chunk(); chunk.key = key; chunk.added = mergeLists(added, brother.added); chunk.deleted = mergeLists(deleted, brother.deleted); return chunk; } }
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕реВрдЪреА рдореЗрдВ рдХреЛрдИ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
- рд╣рдореЗрдВ рд╡рд╣ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪреА рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ
- рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЕрдВрддрд┐рдо рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- рдЕрдЧрд░ рдпрд╣ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рддреЛ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЪрдВрдХ рдХреЛ рдмрдЪрд╛рдПрдВ
- рдЕрдиреНрдпрдерд╛, рдПрдХ рдирдпрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдПрдВ, рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдмрдЪрд╛рдПрдВ; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо "рдкреЙрдЗрдВрдЯрд░" рдХреЛ рд╕реВрдЪрдирд╛ рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ
рдЪреВрдВрдХрд┐ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмрд╛рдИрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЯреНрд╡рд┐рдЯрд░, рджреАрд╡рд╛рд░ ...) рдЪрдВрдХ рджреНрд╡рд╛рд░рд╛ рдЪрдВрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдХреНрд╕рд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЦрд╛рд▓реА рд╡рд┐рдЦрдВрдбреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рд╕рдВрднрд╡ рд╣реИ; рдлрд┐рд░ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ (рдпрд╛ рдирд┐рдореНрди) рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд╣реБрдд рд╣реА рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╕рд╛рде, рдбреЗрдЯрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдСрдкрд░реЗрд╢рди рдХреА рдЕрд╡рдзрд┐ рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рджреБрд░реНрд▓рдн рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╕рд╛рде, рдпрд╣ рдУ (1) рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд▓реЗрдЦ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, Riak рдкрд░ рдЖрдк рдбреЗрдЯрд╛ рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡реЗрдм рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдХрдИ рдиреЛрдбреНрд╕ рдореЗрдВ рдЗрди рдбреЗрдЯрд╛ рдХрд╛ рджрд░реНрдж рд░рд╣рд┐рдд рд╡рд┐рддрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд░реЗрдХрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╛рдЗрдореЗрдЯ рдХреЗ рд╕реЗрдЯ рдХреЗ рдХрд╛рд░рдг рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдШрд░реНрд╖ рдХреЗ рд╕рдВрдХрд▓реНрдк рдХреЗ рдкреНрд░рддрд┐ рдкрд╛рд░рджрд░реНрд╢реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдз (CAP) рдЪреБрдирдиреЗ рдореЗрдВ рд▓рдЪреАрд▓рд╛рдкрди рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ Riak рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рдЖрдпрд╛ред