рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП
"рдХреИрд╕реЗ рдПрдХ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ ред
рдЬрдм рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореИрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЧрд╛рдпрдм рд╣реИред рдЗрдирдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣рд░ рдЬрдЧрд╣ рд╣реЛрддрд╛ рд╣реИред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИрдВ: рдЫреЛрдЯреЗ рдФрд░ рдЙрдкрдпреЛрдЧреА 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 :
log (N) , N * log(N) .
merge sort
?
:
: in-place ( ).
: .
, 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) :
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 . , , :
, , .
, 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 -
?
, .
- рдПрдХ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдФрд░ рд╢реЗрд╖ рдЦрдВрдб рдбрд┐рд╕реНрдХ рдкрд░ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВред
- рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдиреНрдирд┐рд╣рд┐рдд рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдПрдХ рдмрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛ рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдкрд░реНрдпрд╛рдкреНрдд рдирд┐рд░рдВрддрд░ рд╕реНрдерд╛рди рдвреВрдВрдврдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ ред
- рдПрдХ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рдХреБрдВрдЬреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЗрд╢ рдФрд░ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо) рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд╛рд╡рд╛ рд╣реИрд╢рдореИрдк рдкрд░ рд▓реЗрдЦ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ , рдЬреЛ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдПрдХ рдХреБрд╢рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ; рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред