рдХреИрд╕реЗ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рднрд╛рдЧ 1)

рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП
"рдХреИрд╕реЗ рдПрдХ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ ред


рдЬрдм рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореИрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЧрд╛рдпрдм рд╣реИред рдЗрдирдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣рд░ рдЬрдЧрд╣ рд╣реЛрддрд╛ рд╣реИред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИрдВ: рдЫреЛрдЯреЗ рдФрд░ рдЙрдкрдпреЛрдЧреА SQLite рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА Teradata рддрдХред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреБрдЫ рд▓реЗрдЦ рд╣реИрдВ рдЬреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк "howdoesarelationaldatabasework" ("рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ") рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреЗ рд▓реЗрдЦ рдХрдо рд╣реИрдВред рдпрджрд┐ рдЖрдк рдирд╡реАрдирддрдо рдЯреНрд░реЗрдВрдбреА рддрдХрдиреАрдХреЛрдВ (рдмрд┐рдЧрдбрд╛рдЯрд╛, рдиреЛрдПрд╕рдХреНрдпреВрдПрд▓ рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЧрд╣рди рд▓реЗрдЦ рдорд┐рд▓реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдмрддрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред


рдХреНрдпрд╛ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрд╣реБрдд рдкреБрд░рд╛рдиреЗ рдФрд░ рдмрд╣реБрдд рдЙрдмрд╛рдК рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ, рд╢реЛрдз рдкрддреНрд░реЛрдВ рдФрд░ рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рдмрд╛рд╣рд░ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЫрд╡рд┐


, . 40 , . , - , . , . , , .


, , , . , , CRUD; . , , .


, (BigO). , , . , , : SQL . , , .


, , , . ; .


, 3 :




( , ...), , . , .


, . .


O(1) vs O(n2)


тАж !


( ) , . , ! , . (cost based optimization).



, . , . , , .


, " O (some_function() )", , some_function(a_certain_amount_of_data) .


**, , ** . , .


рдЫрд╡рд┐


. , . , 1 1 . , :


  • O(1) ( ).
  • O(log(n)) .
  • тАФ O(n2), .
  • .


O(1) O(n2) . , , , 2000 .


  • O (1) 1
  • O (log (n)) 7
  • O (n) 2 000
  • O (n * log (n)) 14 000
  • O (n2) 4 000 000

O(1) O(n2) (4 ) 2 , . , . -.


, - . 1 000 000 ( ):


  • O (1) 1
  • O (log (n)) 14
  • O (n) 1 000 000
  • O (n * log (n)) 14 000 000
  • O (n2) 1 000 000 000 000

, , O (n2) ( !). 0 , , .



:


  • - O (1).
  • O (log (n)).
  • O (n).
  • O (n * log (n)).
  • O (n2).

: .


:



.


, :


  • /

, , n2, :


  • n4: ! .
  • 3n: ! , , ( ).
  • n: .
  • nn: , , ...

: ┬л ┬╗, . () .


MergeSort ( )


, ? ? sort ()тАж , тАж , sort ().


, : . , , , , . , join , merge join ( ).


Merge ()


, : 2 N / 2 N- N . .


, :


рдЫрд╡рд┐


, 8 2 4- . 4- :


  • 1) ( = )
  • 2) , 8
  • 3) ,
  • 1,2,3, .
  • , 8 .

, 4- , ┬л┬╗ .


, , merge:


array mergeSort(array a)
   if(length(a)==1)
      return a[0];
   end if

   //recursive calls
   [left_array right_array] := split_into_2_equally_sized_arrays(a);
   array new_left_array := mergeSort(left_array);
   array new_right_array := mergeSort(right_array);

   //merging the 2 small ordered arrays into a big one
   array result := merge(new_left_array,new_right_array);
   return result;

, , (: ). , ; , . , :


  • ,
  • , ( ), .

Division phase ( )


рдЫрд╡рд┐


3 . тАФ log(N) ( N=8, log(N) = 3).


?


! тАФ . , 2. тАФ , . ( 2).


Sorting phase ( )


рдЫрд╡рд┐


() . , N = 8 :


  • 4 , 2
  • 2 , 4
  • 1 , 8

log (N) , N * log(N) .


merge sort


?


:


  • , , , , .

: in-place ( ).


  • /. , , . , 100 .

: .


  • / / .

, Hadoop ( ).


  • (!).

( ) , . , , .


, -


, , 3 . , . .



тАФ . . :


рдЫрд╡рд┐


2- :


  • , .
  • (integer, string, date тАж).

, , .


, , , , , . N , N тАФ , , ? .


: : heap-organizedtables index-organizedtables. .



тАФ , :


  • , ,
  • ,

,



рдЫрд╡рд┐


N = 15 . , 208:


  • , 136. 136<208, 136.
  • 398>208, , 398
  • 250>208, , 250
  • 200<208, , 200. 200 , ( , , 200).

, , 40


  • , 136. 136 > 40, 136.
  • 80 > 40, , 80
  • 40= 40, . ( ) .
  • , , , .

. , , log (N) . , log(N), !



, . integer, , - . , , "country" (column 3) :


  • ,
  • , ,
  • "UKnode" .

log(N) N . , тАФ .


(, , 2 , , тАж) , (.. ) ( ).


B+TreeIndex


, , . O(N) , (, ). , -, . . B+Tree. B+Tree :


  • () ( )
  • .

рдЫрд╡рд┐


, ( ). , , ┬л ┬╗, ( ). O(log(N)) ( ). , .


B+Tree, 40 100:


  • 40 ( 40, 40 ), .
  • 40, , 100.

, M , N . log(N) . , , M M . M+log(N) N . , ( M + log (N) ), . (, 200 ) N (1 000 000 ), .


(!). (, , B+Tree):


  • B+Tree, .
  • B+Tree, O (log (N)) O (N).

, B+Tree . , . : B+ O (log (N)). , . , / / , O (log (N)) . , ( ).


, B+Tree. B+Tree , MySQL. , InnoDB ( MySQL) .


: , - B+ .


Hashtable (-)


тАФ -. , . , - , - ( hash join). (, , ).


- тАФ , . - :


  • - . ( ).
  • . , , , .


:


рдЫрд╡рд┐


- 10 . , 5 , , , 5 . - 10 . , , :


  • 0, 0,
  • 1, 1,
  • 2, 2,
  • тАж

, , .


, 78:


  • - - 78, 8.
  • - 8, , , 78.
  • 78
  • 2 ( -, ).

, , 59:


  • - - 59, 9.
  • - 9 , тАФ 99. 99!=59, 99 .
  • , (9), (79), тАж, (29).
  • .
  • 7 .

-


, , , !


- 1 000 000 ( , 6 ), 1 , 000059 . тАФ -, , .


- . , - , :


  • ( тАФ )
  • 2 ( тАФ )
  • 2 ( тАФ , )
  • тАж

- - O(1).


vs -


?


, .


  • рдПрдХ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдФрд░ рд╢реЗрд╖ рдЦрдВрдб рдбрд┐рд╕реНрдХ рдкрд░ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВред
  • рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдиреНрдирд┐рд╣рд┐рдд рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдПрдХ рдмрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛ рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд░реНрдпрд╛рдкреНрдд рдирд┐рд░рдВрддрд░ рд╕реНрдерд╛рди рдвреВрдВрдврдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ ред
  • рдПрдХ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рдХреБрдВрдЬреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЗрд╢ рдФрд░ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо) рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд╛рд╡рд╛ рд╣реИрд╢рдореИрдк рдкрд░ рд▓реЗрдЦ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ , рдЬреЛ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдПрдХ рдХреБрд╢рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ; рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

Source: https://habr.com/ru/post/undefined/


All Articles