NoSQL рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ

рдкрд░рд┐рдЪрдп


"рдЖрдкрдХреЛ рдЬрдЧрд╣ рдореЗрдВ рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП
рдЙрддрдиреА рд╣реА рддреЗрдЬреА рд╕реЗ рджреМрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рджреЛ рдмрд╛рд░ рддреЗрдЬ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП!"
(c) рдПрд▓рд┐рд╕ рдЗрди рд╡рдВрдбрд░рд▓реИрдВрдб


рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореБрдЭреЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреЛ рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ , рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рддрдХ (рдХрднреА-рдХрднреА рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП) рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдмреИрдарддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдпрд╣ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдИрдЯреА рджреБрдирд┐рдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдореЗрдВ (рдпрд╣ рдмрд╕ рдРрд╕рд╛ рд╣реА рд╣реБрдЖ), NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП), рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рдореИрдВрдиреЗ рдЕрд▓рдЧ рд╕реЗ HBase рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЙрди рдкрд░ рдХреБрдЫ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдЙрдиреНрдореБрдЦ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬреЛ рдХрднреА рдирд╣реАрдВ рдереЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдЕрдорд╛рдВрджреАрдк рдЦреБрд░рд╛рдирд╛ рджреНрд╡рд╛рд░рд╛ "рдПрдЪрдмреА рдПрд╕реЗ рд╕реНрдХреАрдорд╛ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдкрд░рд┐рдЪрдп" рд▓реЗрдЦ рдореЗрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдкрд╣рд▓реЗ рдкрдврд╝реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджрд░реНрд╢рдХреЛрдВ рдХреЛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрд╕ рдореЗрдВ рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреАред


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, "рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ", рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ (рд╕рдВрдЧрд░реЛрдз рдореЛрдб рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдордИ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ), рдХрд┐рддрдирд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЧрдгрдирд╛ рдЕрднреНрдпрд╛рд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛? рджрд░рдЕрд╕рд▓, рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ред рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЬреЛ рдХрдИ рджрд┐рдиреЛрдВ рд╕реЗ NoSQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдЗрд╕рд╕реЗ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдЗрд╕рд▓рд┐рдП рддреБрд░рдВрдд рдЖрдзрд╛ рд╕реМ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рддрдХ NoSQL рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ HBase рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреА рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕рдордЭ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд░реНрд╕ рдХрд░рдирд╛


, NoSQL , ┬л┬╗ ┬л┬╗. . NoSQL . NoSQL , , . , ( ). , ┬л┬╗ , . NoSQL . , , .


┬л┬╗ , :


. , ( , Linkedin). :
  • , ( )
  • / / ( )

, . (, , , , : , .., ┬л┬╗), /. :


user_idfriend_id

ID


HBase , :


  • , full table scan,
    • , SQL- тАУ ; , , Impala SQL- JoinтАЩ HBase, тАж

ID . ┬л ID ?┬╗ . ┬л┬╗ ( 1 (default), ):


RowKey
1:2:3:
1:2:

. : 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):


RowKey
1:2:3:count: 3
1:2:count: 2

:


  • : ┬л ?┬╗ => (n)
  • : : , , ┬лcount┬╗ .. . (1)
  • : : , - ┬л┬╗ . , , , => O(n)
  • , ┬лcount┬╗, , -

2 , ┬л ┬╗. ┬л┬╗ 3 (col).
┬л ┬╗: ! тАУ , 1 (, , , ┬л// ..┬╗). ┬л┬╗, NoSQL-, HBase :


RowKey
: 1: 1: 1
: 1: 1

. , :


  • : , , , ┬л┬╗: , True, тАУ False => O(1)
  • : : : ┬лID ┬╗ => O(1)
  • : : ┬лID ┬╗ => O(1)

, , , , . , тАж


- . ? userID.friendID? ( 4(row)):


RowKey
.: 1
.: 1
.: 1
.: 1
.: 1

, , (1). 3 - .


┬л┬╗. , 4 , , , ( , HBase ). , . , userID friendID, , , . ( 5(hash)):


RowKey
dc084ef00e94aef49be885f9b01f51c01918fa783851db0dc1f72f83d33a5994: 1
dc084ef00e94aef49be885f9b01f51c0f06b7714b5ba522c3cf51328b66fe28a: 1
dc084ef00e94aef49be885f9b01f51c00d2c2e5d69df6b238754f650d56c896a: 1
1918fa783851db0dc1f72f83d33a59949ee3309645bd2c0775899fca14f311e1: 1
1918fa783851db0dc1f72f83d33a5994dc084ef00e94aef49be885f9b01f51c0: 1

, , , 4 тАУ (1).
, :


1 (default)O(n)O(n)O(n)
2 (count)O(1)O(n)O(n)
3 (column)O(1)O(1)O(1)
4 (row)O(1)O(1)O(1)
5 (hash)O(1)O(1)O(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]} #  15 

{0: [1, 10800], 1: [5, 10800, 2, 10801, 4, 10802], 2: [1, 10800], 3: [3, 10800, 1, 10801, 5, 10802], 4: [2, 10800]} #  18  

{0: [1], 1: [1, 3, 2, 5, 4], 2: [1, 2], 3: [4, 1, 2, 3, 5], 4: [1, 2]} #  15 

, 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 рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реИ: рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рд╕реЗ рд╕рд╛рд░ рдФрд░ "рдХрдорд╛рдВрдб" рдпрд╛рдж рд░рдЦреЗрдВ:


  • рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдХрд╛рд░реНрдп рдФрд░ рдбреЗрдЯрд╛ рд╣реЗрд░рдлреЗрд░ рдкреИрдЯрд░реНрди рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рди рдХрд┐ рдбреЛрдореЗрди рдореЙрдбрд▓ рд╕реЗ
  • рдкреНрд░рднрд╛рд╡реА рдкрд╣реБрдБрдЪ (рдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреИрди рдХреЗ рдмрд┐рдирд╛) - рдХреЗрд╡рд▓ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛
  • рдЕрд╕рдорд╛рдиреНрдпреАрдХрд░рдг
  • рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
  • рд╕реНрддрдВрднреЛрдВ рдХреА рдЧрддрд┐рд╢реАрд▓ рд░рдЪрдирд╛

All Articles