рдкрд░рд┐рдЪрдп
"рдЖрдкрдХреЛ рдЬрдЧрд╣ рдореЗрдВ рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП
рдЙрддрдиреА рд╣реА рддреЗрдЬреА рд╕реЗ рджреМрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рджреЛ рдмрд╛рд░ рддреЗрдЬ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП!"
(c) рдПрд▓рд┐рд╕ рдЗрди рд╡рдВрдбрд░рд▓реИрдВрдб
рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореБрдЭреЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреЛ рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ , рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рддрдХ (рдХрднреА-рдХрднреА рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП) рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдмреИрдарддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдпрд╣ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдИрдЯреА рджреБрдирд┐рдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдореЗрдВ (рдпрд╣ рдмрд╕ рдРрд╕рд╛ рд╣реА рд╣реБрдЖ), NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП), рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рдореИрдВрдиреЗ рдЕрд▓рдЧ рд╕реЗ HBase рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЙрди рдкрд░ рдХреБрдЫ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдЙрдиреНрдореБрдЦ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬреЛ рдХрднреА рдирд╣реАрдВ рдереЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдЕрдорд╛рдВрджреАрдк рдЦреБрд░рд╛рдирд╛ рджреНрд╡рд╛рд░рд╛ "рдПрдЪрдмреА рдПрд╕реЗ рд╕реНрдХреАрдорд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдкрд░рд┐рдЪрдп" рд▓реЗрдЦ рдореЗрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдкрд╣рд▓реЗ рдкрдврд╝реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджрд░реНрд╢рдХреЛрдВ рдХреЛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрд╕ рдореЗрдВ рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреАред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, "рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ", рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ (рд╕рдВрдЧрд░реЛрдз рдореЛрдб рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдордИ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ), рдХрд┐рддрдирд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЧрдгрдирд╛ рдЕрднреНрдпрд╛рд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛? рджрд░рдЕрд╕рд▓, рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ред рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЬреЛ рдХрдИ рджрд┐рдиреЛрдВ рд╕реЗ NoSQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдЗрд╕рд╕реЗ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдЗрд╕рд▓рд┐рдП рддреБрд░рдВрдд рдЖрдзрд╛ рд╕реМ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рддрдХ NoSQL рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ HBase рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреА рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕рдордЭ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд░реНрд╕ рдХрд░рдирд╛
, NoSQL , ┬л┬╗ ┬л┬╗. . NoSQL . NoSQL , , . , ( ). , ┬л┬╗ , . NoSQL . , , .
┬л┬╗ , :
. , ( , Linkedin). :
, . (, , , , : , .., ┬л┬╗), /. :
ID
HBase , :
- , full table scan,
- , SQL- тАУ ; , , Impala SQL- JoinтАЩ HBase, тАж
ID . ┬л ID ?┬╗ . ┬л┬╗ ( 1 (default), ):
. : 1, 2, тАж тАФ , ID . , . (1, 2 3), тАУ (1 2) тАУ HBase, :
:
- : , , , RowKey = ┬л┬╗ , ┬л┬╗ . , ┬л ┬╗ False;
- : : RowKey = ┬л┬╗, . - , , ID .
- : :
- RowKey = ┬л┬╗ , , ;
- , , ┬л┬╗ , ┬л┬╗ .
, , ┬л ┬╗, , -. n. (n-1). (-1) , - .
- : . (n)
- : : , => (n)
- : :
- тАУ => (n)
- ┬л┬╗ . ┬л ┬╗, (n-1) . , ┬л-┬╗ - тАУ n. ( , (2)) (n) . : ┬л┬╗ , , :

, O(n).
, , , , - . ┬лcount┬╗, . - , ┬лcount┬╗. , ┬лcount┬╗ . .. 2 (count):
:
- : ┬л ?┬╗ => (n)
- : : , , ┬лcount┬╗ .. . (1)
- : : , - ┬л┬╗ . , , , => O(n)
- , ┬лcount┬╗, , -
2 , ┬л ┬╗. ┬л┬╗ 3 (col).
┬л ┬╗: ! тАУ , 1 (, , , ┬л// ..┬╗). ┬л┬╗, NoSQL-, HBase :
. , :
- : , , , ┬л┬╗: , True, тАУ False => O(1)
- : : : ┬лID ┬╗ => O(1)
- : : ┬лID ┬╗ => O(1)
, , , , . , тАж
- . ? userID.friendID? ( 4(row)):
, , (1). 3 - .
┬л┬╗. , 4 , , , ( , HBase ). , . , userID friendID, , , . ( 5(hash)):
, , , 4 тАУ (1).
, :
, 3-5 . , , , ┬л┬╗, ┬л ┬╗. 3. , , .
тАУ . ┬л ┬╗ , (n). , , , ┬л ┬╗, ┬л-┬╗. ┬л-┬╗ :
, , :
- . n. " " тАУ . , ┬л ┬╗ HBase . тАУ ┬л-┬╗
- . ┬л┬╗, , . = - , ┬л┬╗, тАУ ┬л┬╗. , ┬л┬╗ ┬л┬╗ ( 1 2). .
- . . тАУ ( ┬л┬╗ , ). .
5 , , . n , , 5 .
n= 5. ┬л┬╗ ID-:
{0: [1], 1: [4, 5, 3, 2, 1], 2: [1, 2], 3: [2, 4, 1, 5, 3], 4: [2, 1]}
{0: [1, 10800], 1: [5, 10800, 2, 10801, 4, 10802], 2: [1, 10800], 3: [3, 10800, 1, 10801, 5, 10802], 4: [2, 10800]}
{0: [1], 1: [1, 3, 2, 5, 4], 2: [1, 2], 3: [4, 1, 2, 3, 5], 4: [1, 2]}
, ID, 10 000 тАУ , False. , ┬л┬╗ .
Windows 10, - HBase, тАУ Python Jupyter Notebook. 2 CPU 2 . , ┬л ┬╗, ┬л┬╗ Python. HBase happybase, (MD5) 5 тАФ hashlib
n = 10, 30, тАж. 170 тАУ ( n) - ( 15 ).
, . . n, ┬л ┬╗ , ┬л┬╗ , ( ).
тАУ , . тАУ .

3-5 ┬л-┬╗, .
2 , , 2 3-5. , тАУ - / HBase 2 . , .
1 , .
.

3-5 тАУ , . 1 2 . 2 тАУ - ┬лcount┬╗, n . - , . , ( , 1 2, ) ( " ").
тАУ .

. 3-5 .
, , 4 5, , , 3. , тАУ , , .
1 2, , . 2 1 тАУ - - ┬л┬╗ count.
:
- 3-5 , HBase; .
- 4 5 . , 5 . , .
- , ┬л-┬╗ , .
. , ( ). , thrift, happybase, , Python ( , ), HBase, Windows 10 .. , . ┬л ┬╗ .
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ - рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдЬреЛ HBase рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реИ: рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рд╕реЗ рд╕рд╛рд░ рдФрд░ "рдХрдорд╛рдВрдб" рдпрд╛рдж рд░рдЦреЗрдВ:
- рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдХрд╛рд░реНрдп рдФрд░ рдбреЗрдЯрд╛ рд╣реЗрд░рдлреЗрд░ рдкреИрдЯрд░реНрди рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рди рдХрд┐ рдбреЛрдореЗрди рдореЙрдбрд▓ рд╕реЗ
- рдкреНрд░рднрд╛рд╡реА рдкрд╣реБрдБрдЪ (рдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреИрди рдХреЗ рдмрд┐рдирд╛) - рдХреЗрд╡рд▓ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛
- рдЕрд╕рдорд╛рдиреНрдпреАрдХрд░рдг
- рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
- рд╕реНрддрдВрднреЛрдВ рдХреА рдЧрддрд┐рд╢реАрд▓ рд░рдЪрдирд╛