A %?DB
RDBM RD BMSS to MongoDB Migration Migration Guide C?? ? B %J 2016
Table of Contents !??
1
?K?
1
> D? F> * = F=I= ? DJ?> B D>? A? D>? %= ?? C==? D A?=J DT?? D>? > %=? *=? H E>? ? *?? E>? *?? D? D? G= !?I? !?I J >K? >? !?I > E=? ? !> ? > D?
2 3 4 5 5 5 5 6 6 7 7 8 9
A=? !?? %?DB D ? A! %? $ %?DB J?I %?DB A? F>H< %?DB C?? B! A>J ? %?DB %??? ? C??J D=J !>=>?? =? & C?? F? #J D>? =? E?? C?? !?I
10 10 10 10 11 11 12 12 13 13 13 14
%? D %?DB
14
?= A=J =
15
? %?: %?DB %?DB ?J C>>?J * ? C?=?
15 16 16
C?=?
16
C? =
16
!?? =?= ? ?? ? >?>? J J.
?K?
B HJ H = ? ? =? J, = H ?=?? H ? ?H ? H? = ? =?= J? =>. ? ? ? =J, => ==J ? ? , >==? > ? > ?K? > =? =< %?DB $ .
B ?? ?= ? , <J ?=? == <J <= =?, ?=? =? ?, =, , DBA ? J> >?. !? > ?K?, = >J >?.
A == ? F 1, ? > J ? > ==J > =?= >?>? J> (*DB%) %?DB >J =?. ? > H? H H > > ? *DB% %?DB. -J- >, ? F 2. %?J =?< >? = ?=?. F > ? ? = ?>? ? = , = ?=? >??.
> = H< T? ? ? ?= , >=? ? ?=, >? ==J >? ? ?J . ? ? > %?DB ? >>?J = = %?DB <== ? T?J, ?=? , H- ??, ? ?=?. %?DB ? = ? > =.
1
Or Organization ganization
Migrated F Frrom
Applic Application ation
>?J
= &
C> D %?>? & A?=J
UJ
=
? %=
C
%== *DB%
A?=J, = H<?
C=
%J$
A
? A>
% $
C>>
F
$
=, %= H<? =>
% H<
%== *DB%
C?=K C?? %?>?
BKK
%J$
*=-> A?=J
K?
=
?= H, E>=J J>
C??=
= & %J$
%= H<? =>
Figur Figure e 1: C
> D?
Q F> =J =?= >= U? ? 2->??= = H ? =>?.
> ?>?= ? ? >? > =?= %?DB HJ ? H >=.
Q ? J?> >? >= H > ->? ? J.
A H ?J >=? I, H== ?, > ?= ?? J =J > > >? . B I=? > ?, F 3 = ? ?=? >?=J > =?= %?DB H=. > ? ? ? , = ? DBA:
Figur Figure e 2: %? *>
2
R DB DBM MS
MongoDB
D D =
C==?
*H
D>?
!?I
!?I
!
E> >?, >? ? $lookup >? > ? ==?
Figur Figure e 3: >?=J ?=?
F> * = F=I= ? DJ?> B D>? % H J >=I ? >= ? ? > T?=J ? ( ?) >?, ? =. %?DB >? ? ?J ?? == B (B?J ). B
?? I? = ?? ?= ?= J ?, =? ? U? ?. ->? ? J, >? = =? H =? ==. >< J = > ? =? >? ? . BJ ?, J? > ?? = ?? ? *DB% =H H? =>?. A? *=?= % (*%) ? ?= >=IJ J ? UI=J = > ? >K > ?H =? >?. > = > ? J ?? =?N >?. ! = >= ? HJ < ? >? >=N UI=J. !? > >?, >J J > =?= N U > >? >=. H, ? ? ?= J >? >=N , > . F I>=, =? ?-= =? ? H *DB% = H=
Figur Figure e 4: *=?= >, F= 2-D = 3
>>?=J == (>) ? ?= >? ? %?DB. !? F 4, *DB% "!D" T= ! "?" = H "C" = ?= =? N H?. ? >? >=, > ->? ? J =J -! J >?? = T= ? ?= . *H ? =>? H ?==J ?>=K ? = ? ?H ? ?= >?, =>?? ? ! = H? =? >= . %=? > ? %?DB ?= > ? H H > ? J ->? =J H? ? >?. { first_name: “Paul”, surname: “Miller”, city: “London”, location: [45.123,47.232], cars: [ { model: “Bentley”, year: 1973, value: 100000, ….}, { model: “Rolls Royce”, year: 1965, value: 330000, ….}, ] }
!? >= I>=, =?= >= ? ?=J H =. (!? =J > =? H== ? ?, ? ? ? =.) ? U HJ ?< , ? HJ ? H = H =?. >? >= ?= ? ? > > ?= ? ? HJ. == ? H? =?= ? >? >=, ? I>= =? => ? F 5. !? I>=, =? = ? *DB% ? T = ? = = ?J. %?DB, == = ?? H? ?= >?, =?< H ?= ? >? ?? = ? >>? .
Figur Figure e 5: -!? D C== 5 *DB% =
2 B D>?
A? D>? %= !? ? ><? > ?= ? ==, >? >= = >? ? ==J ?: Q >= >? ? H ?= == , ? ? ! >== = ? J. %?DB >? J==J ?= , ? ?=J ?= > >>J <. ? ?, 4
*DB% ! >== > >== J= =?. Q A >? =-??, ? >== ? ( == ?) > >= ? >< = > K?= ==J ? >>J H. DBA ? =? ? HJ >? ?=J I? -? ! (= J ? = ? I? *DB%) == > ? =.
?? C==? D A?=J J==J > ? < ?>=K >=? ?= R T?J ? H? ? ? ? ?= ? H? ?J > ? ? >?. H, I>= H ?>=K? ? ?T=, ==J H? > >== ? =? ?=J R %?DB 3.2 =J H $lookup ? %?DB A? F>H<. A? F>H< =? ? >= ? ? ? =?. D>? ? >=- =? ?> >? ? =. =? ? ; ?> >? J . = ? ? ? ? > *DB%, $lookup = -? H ??? =? ?=J . A = -?, > ? > >? > "" ==? ? >? > "=" ==?. A ? I>= = ==? ?? order >? > ? =? ? $lookup ? > product_id ? > >? > >? = > products ==?. < I>= ? $lookup H== ? ? ? ? = R ? ? A? E??>?.
DT?? D>? > =?N ? = ? > ?, H T ??? : Q /H ? ? H > >? >K >? ? Q J ? > J Q =-J= ? H >? A T , > = >? ? > ? =?N , >?: 1. H ?=J >=>? J =?= ; 2. H %?DB = >=>? >. F 6 ? ? I>= I. ?=J = ?J = >? > =? ? H<=, ? ? ? > ? . > ? = ?J I? =?' > >>? J ?=JK? = >?? J *DB%. ?=J ?T > ?=J , ? ? ?==J H? ?= %?DB >?. A? I>= >? ? A== GN >? > = %?DB H? =? ?H =- =?? >?>? =>.
%=? *=? H E>? ? *?? D? H? > >? ? ? H? >? ? ? ==? ? =?-T ??. , H, > ?= ?? ? ? > ?.
E>? D H 1:1 1:>?J =? (H O>?JP =HJ H, H ? ?I 5
Applic Application ation
R DB DBM MS Action
MongoDB Action
C *
INSERT (n)
insert()
= ( ?, , >?, .)
>?
D=J *
SELECT ? JOIN (n) =
find() ?=
A *H
INSERT
% A?L
1
>?
OHP insert() =, ? <J OHP ==?, ? >? LL
LL
Figur Figure e 6: A?=JK? D? >>
> ? >?) ?= ? >? H? ?= >?. ? H? ? ??>? ? = >= H >?. ? I>= , ? R ? ? = R = > H? >? ? H? J ? ?? H? T . ! =, ? > =?.
Q ? >? ?=J ? ??=J H? ? K, H= >? >? ==J Q >? K I %?DBN ? 16%B >? =>
*?? *?? ?= ?>=K?, ? ? > UI=J ? >?. B =? H== ==H- = ?, ? ?= ?- . *? ==J >=>? J ? _id T=1 ? >? ? = >? ?. A ? J ? I J =? ? ? . *?? = : Q ? >? H= ? T? >? ? H >=? =? Q ? > >?J ? Q ? >=I >?J-->?J =? Q >= =, = . $lookup ? ? ? =? ?
A = = > T= ? >T >==J. (* A=? !?? ? > ?>?.)
> ? H _id > ? ==? >==J > ? ? = .
== 1:1 =? = > ? ?= >?. *?? H? >? ? ? ==? = H?:
D? D? G=
Q A >? ?=J , ?? ? > >? =J . A? I>= > > > ??= ?= . E>? ?=J ? ?->>J >? ( H<? ) ==?
C>? H ? ? R >? ->? ?? H? >? R = ?>?= ? H? =?= ? >? : Q *DB% >K T?J ( H ? > H? H > I? >?? J>)
1. A ? T= >J <J H? %?DB >?, ? >==J J T J . 6
Q %?DBN >? >= >K H =? ( = > ? >< ?H > I? ? ) D >=? ??, ? ? I>= ?=? > ? =? ? > = ? >??.
!?I? !? ?J , ?I ?= ?= >? ? ?= > ?. !?I ? %?DB ==J ? ?I ? =?= . %?DB B- ?I, ? ?=J ?J ?I. A , H== >>=J >= >? > $ <?. J ? ?J =?N = ?> ?I =?. A H == , ?I? ? > : > ? H ? (< ? >>J) .
!?I J %?DB J >= UI=J ? H . BJ =, %?DB ? ?I ? >?N _id >J <J T=. A== -T? ?I ?J ?I. A?J T= ? ?J ?I, ?=? T= H? J. !?I ? %?DB ?=: Q Compound Indexes. ? ?I ?? %?DB ? > ? ? ?I J J. =J = H? ??? - ? J==J ? H? ? ?. J ? >== H?, H== > >? C>? !?I, H ?= ?I >?? ? >== T=. F I>=, ? ? =? >. =? >J ? T? > ? = ?>, T ?>, ? ?. >? ?I ? = ?>, T ?>, ?
?, = T?=J = = H == = T. A? ?= ?T >? ?I ?J =? T=() H? ?I ? , H ?I ? ?= T= >J ?J: >? ?I H= = >K =<? > J = ?> = ?> ? T ?>. Q Unique Indexes. BJ J? ? ?I ?, %?DB H== ? ?H >? I? >? H H= = ? = = ?I T=. BJ =, == ?I ? ?. ! >? ?I T ?, >?? = > ?. Q Array Indexes. F T= ?? ? J, J = ?I ?J. F I>=, >? > ?= T= >? . ! ? ?I ? T=, ?I ? ? T= ? >K J ?I. ? = J?I ? J ?I R T= ?? ? J, H== ?I ? J ?I. Q TTL Indexes. Indexes. !? > = I >==J. > $ ($) ?I ==H J > H H== >==J = . A >>? $ ?I =? >?? ==? H?H J (.., > ? 100 J) ? =<>. Q Geospatial Indexes. %?DB = ?I >K = =? H? H->??= , ? J> . ?I ==H %?DB >K >? ?? =J? ? = ? ? =?; H? =, ?= =J?; ? =, ?= =J?. Q Sparse Indexes. ?I ?=J ?? ? >? ?? T T=. B %?DBN ==H >= J > ? >? ?, >>? > T= ? ?=J ? == >?. ?I ==H >==, > T? ?I H? T= ? ? ? == >?. 7
Q Partial Indexes. %?DB 3.2 ? = !?I H ? H > UI= =? !?I, H DBA ? J ? I? H== < >? H >? = ?= ? = ?I. .. ? "" ==?, ? ?I ? ? =J >?J > ?=J ? ? ?I = > ??= ? {orderState: "active"} R J ? > >>J, ? H >? H= == >K? . Q Hash Indexes. ?I > = T= ? ?I =. >J ?I ?= - ?, >= ? ?> ? >? . Q Text Sear Searc ch Indexes. Indexes. %?DB =K ?I I ?, =?-T =? = >>?, <?K? ? H. I ?I ? >? ? =? . E ==? >J > ? I ?I >J ?= >== T=. %?DBN ?? == == ?I J ? ?I ? ? ?J >? R ?=? ? ->? ? J =>? R ><? > > > H= ? J *DB%.
>K? >? !?I %?DBN J >K = ?I >==J J ?==J ??? =? J =? ? =? =? H ? >. J >K ? ? ? cursor.hint() >. A H =?= , DBA ? H J =? ? ? >>? J H==-T? ?I J ? explain() ?? H ?: Q ?> >? ? Q ?I H R ?J Q J H , >?? ? >? ? ? =
Q ? ?->>J H >, H ? ? ?I H= ?T= Q ?> ?I ? ?? Q ?> >? Q H =? J < =, ? >==? Q A=? J =? H ? %?DB ? =? ? >?? = ? ==? =J ?I ? ?. ? ? = ? =>? ? ? ?. %?DB D T= > >>?=J ? = ? ? ?, =? == ? ?=J ? H ? I ?T= = ( = 100>). T=? ? ==? H ? =J =? ? R ? J ==? ? ? = T=. D= %?DBN %? ? C= %? =>, ?H = J T= < ? ??? HJ ? > ? DBA ?=JK T J >=. = J T= ( H? ? F 7) =J H J ? H =?J > R ><? >= ?J =H H >>? ? ? , H== ?J ?J =?J <. = J T= H== ?=JK == >>?? ?H ?I ? > J >?. ? ?T, ?H ?I ? == ? ? J> ? /C= %? > R >? ==? ?I = H ?J > =?. = >J ? ?J , =HJ > ==J H== ?J (.., H =J =?). DT?? ?I <J ? > ? = = ?J <J ? H? >=>?? %?DBN -? =?-?? =-.
8
Figur Figure e 7: = J T=? ? %?DB %?
> E=? ? !> ? > D? %?DBN J?> > > ? =?= . C==? ? H T T?? , .., >? T= ? J. D>? ? ? ==? ? ? == > T=. ? ? ? >? J ? ?H T= =? I? ?. C? I>= > : Q > > H== >== T =? ? =? ?, ? > H== ?. Q ?> ? H? > ? ? Q ?>? ? ? ? J. F ??, > >J = = > H = = >?, ? > H== ?. Q E > >J J ? > ?, H H? ?.
%=? =-H= ? ? , H->??= > =?= >=I ? ?=. !? %?DB, ? ? H? >? ?>?=, >= B >?. %?DBN UI= ? J?> > >? > =>? ? ?? =? H. F I>=, = ? DBA H<? ? ?H =>? ? =?= > T J J? >, ?J H?. A >?>> H== < J; ? < H< >?. %?DB ?= = = > ? ? = . D= ? H? ? J . A? H? J > , %?DB H== ?? H ? >? =J ALTER TABLE ? -?? > > . ?T = I? >??? =? ? ?. ? ? =?= , ? =? >J DBA >J T= ? . ? =??? =>?, DBA ? ? > J??K =? ? , ?
9
? H? = ?J ALTER TABLE ?. A %?DB ==H > = J?>==J, ? ? =?, H J==J ? ? %?DB. E=? =? >=, ? > ? > =J ? > ><. A ? DBA = >? > ?? = ? ? >? , D>? =? = ? R = = ? .
A=? !?? > ?, ? > H ?? =? H ? %?DB ? =. DBAN ? = ?T %?DB > =?N >? ??J ? =J. E =H.
%?DB ?=J ? ; =<H *J =, = ? ?. J =>? > I ? ? =? ? H H >> H< H? =?.
%? $ %?DB J?I F = >= H $, = ?? H $ >? CREATE, ALTER, INSERT, SELECT, UPDATE ? DELETE >
%?DB A!. >?? ?= >? H I>= ? ?? %?DB J $? ? >?. !? ?, %?DB ? I? J ? J .
%?DB A? F>H< A? H? ?J ? >? =J ? ? * DB%.
%?DB D ? A!
%?J $ ? ? =. A =, >? $ ?==J = = H<?, :
E ? = J H %?DBN ? =.
1. B=? ? H? =? , ?? >=IJ ? >>? >?.
? ?>?= ? H? $- *DB% ? %?DB %?DB ? >=>? > ( ??) H? A! T >>? =?, >==J I- =? =< $. , = H T?J H? %?DBN B >? >= ? ? -? >>?, >< =? ?? >=.
2. EI? ? %* ? . = ==J ? >=IJ, = >== ? ? ==H =-> ?=J.
%?DB > > = =?, ?=? =? = ? J %?DB (.., , J?, .E, ) ? > ? 30 >>?J- . %?DBN > >?>K ?? > ?H = ? >=J =? =>?. F ??, = ? >=J ?
3. ! ==, H? ? %* ? H? $ =. %?DB A? F>H< ?=J H? , H = >= ??=J GROUP BY ? = $ >?. ? ? A? F>H<, >? ? ==? ? ? =?, H J ? . EI? >? ? ==? > ? ? >?. >= I? ? $group >?? (.., =, >I>>,
10
Figur Figure e 8: ? ?H ? H H= =K? ? > %?DB
>?>>, , ? ? ? = ) >? =?.
B! = J %?DB , B! C?? ==H?:
$ A? %? C H ?> I>= >?? H ? $ ?= ? %?DBN A? F>H<. ?= > >=I ?=J, %?DB = ? %* ? ? ? ? ==?.
Q B! = H > %?DB ==? =K. ? H > ? J, ->? ? J =J ?
B? !?==? !?? R %?DB C?? B!
Q C? ? = ? = > I J B! =, H ? ? =K ? >?
D? J H? >? =- ?=J, J ? ? ? =-> ?= , ? ? ? >=- ? >? , B! ? ?=J => ? H? H ><. >?, >? =? ? %?DB ? T > =J I= H ?J-? $- B! ? ?=J =>. ? B! C??, ?=J, ? ? ? ? ?H >==J =K >- ? ? >? ? %?DB, =? ?= ? $ , ? > B! = =J H? >==? ?. $- B! = = I ?? H TI > ?? = . ? ==? H? H<? H %?DBN J?> > ? , >=->??= >?. !?
Q ?= $ >? J B! = ? =? %?DB ? ? %?DB ?
A?==J, ?> B? !?==? (B!) ? = ?? ? %?DB H (H ? $), =? ?= =?= . ?? ?, ?=J, ? ?, ?=? =K? ? ?=J >== . !?? == H = > ? ? ?=? A, A=JI, !?>, , $ A?=J, %J, ?, =<, A $> ? =?.
A>J ? %?DB *=?= J==J H== = ?J, ?=? AC!D ?? ? ?? ?>?. *=J, ? H? T ?J J > ?H J . %?DB, ? >?? >?J = =?= , ?
11
?= >=>?? = >J ?. %?DB H ? AC!D >? == R ?=? =J > J ? ->? >==J. BJ >? = T= H? ?= >?, > ?J ? ?= *DB%, H J??K =J AC!D ? ? >?? ?= ?J =. D>?-== >J ? %?DB ? >= =? >? ; ?J ? == < ? =? ?? H >?. D H ?=->? > ?, >J >=->? ??. >== R ?=? ? findAndModify >>? ==H >? >==J ? ? ? > ? . findAndModify H= > ? H ? = > >=I ?? =. F I>=, ?=J = > - =<, , ? ? >? ? = ? > >=I . A? =? ?= >=>?? H- >> ??-=< >?. >?? H ? %?DB, ? >? ?? .
> >= MT ? N ? H? H=>? > >==, ===J =. =I H ??, =? ? ? H ? %?DB ? ?? ? ?= H H? ? > , ? >I>> >?. ? = =? =< =?, H J==J ?=JK? ? ? , ? ?. ? H ??, H ? H ?= %?DB H= ?. %?DBN = ?T?. %?DB >== == H ?? T =? >?. F I>=: Q =? H H=>? > >J (=). Q H ? = = ? ?J. Q H ? = = >J ?. Q H ? = = == ? R ? J =J ? ? ?. ( = = > ?H< =?J ==J ? ?).
%??? ? C??J BJ =, %?DB == ? >J , ?? ? ??J. A=, J = ?J > ?J H? %?DB = H== ?==J ?? R > =< > / = =? ? =?= . A>? ? ?T ?J = ?= T ? %?DBN * ?, H ?= H =?' ? >> = .
D=J %?DB H ?? ?= == H ? =J. C?T= ? I? 12
!>=>?? =? & C?? F? #J A >? =, %?DBN >? >= ? ? =>? ? ! J >? H? ?=, >==J B >?. > >= ? = ? F? #J ?J ??.
D>? =?
Figur Figure e 9: C?T D=J ?
H ?? ? = ? ? ? < H=. H ?? ?T ? ? =J ?= R ? -?, -==? ? . ? =? > H ?? ? >??. %?DB H- =? ? ?-< ?= ? H ? =J ? =?. B =J? ? R H H ? ? ?I >T? R %?DB H ? ? ?=. ! = %?DB ?? ? ? H ? > ?= , ?= ? ? =, J >??? ?? H? .
DJ?> > ? =J, = >? ?= ? >=>? >?? =J, ==J H? >== =?, ? ? = >?>? => ? > ? H?> J>. * ? =? ?>? ?= < ? =? , %?DB D>? =? H? . ? ? < ? >? , J, ?, ? ? >?J T=. A =, DBA ? =J ?? ?, H= = >?? ?T UI= >? >=. ?T? UI=J >K H >? and ar are e not = ?J ==? R ?=< ? *DB% H J? > T? ? ?. F ?J <J > <: Q I Q ! I, = J Q = ? = > (= I? ? < ?? ? > = ? R N =J > >= , I>=) Q = == H? ? ? A ? I>=, > ==H? < ? ? ? contacts ==?: Q J ? = ? 1994 Q >? ?? ? ?> ?/ ? >= Q ? ?, ? ?> ? >= ? 13
? J T?? D>? =? =: db.runCommand({ collMod: "contacts", validator: { $and: [ {year_of_birth: {$lte: 1994}}, {$or: [ {phone: { $type: "string" }}, {email: { $type: "string" }} ]}] }})
A? =? < ==? J ? ?J = DBA >= H %?DB, D>? =? ? %?DB J $?.
E?? C?? !?I A ? > D? ?, %?DB ? ?I ?=J, H ? ? ?J ? ? > = = = ? ==?. A = == H ? ?I ? =>? = ? > I? ==?.
Figur Figure e1 10: 0: %== ? D %?
%?J >? ?= ??? I? *DB% ? === H ?H %?DB , ?>?==J ?? ? : Q A > *DB%, =? H > < %?DB ? >? >. Q C??J <, I>= ? %D5 <>, ? = > .
%? D %?DB
Q A== ?H=J H? %?DB ?=J.
> >== ? >? > I? =?= %?DB. = = ? ? ? I? ??>?.
UJ ?>?= > > 6 ==? > ? 20B > = %?DB.
%?J H? , H ?> ? = ? > ? %?DB ? mongoimport =. EI ?> $ (E$) = = >>?=J H? >? > =?= %?DB. A ?> E$ ? ?=? !?>, ? ? =? = %?DB ?? ?= H , ?> ? %?DB >, ? = ? >? ==?.
!?>?= >? ? H? ?H =? >=>? H %?DB, H >== =? ??? ? =J *DB%. %? ?=J =? ? >?K ?= > ? > >?= ? = =>? ?. !?>?= >? =>? ? ==J H= = ? =-< = ?J < =J . %?J ?K? > J>, >? =J > ? I? *DB% %?DB ? === ?, > =? =>? ? = ?. ? ? , >? ? H ?= = 14
? J>. ? =? OAP ? OBP ? %?DB, ? ? =? =J H? >. !? ?, D A ? =J , ? =? H ?I J D B. %?H= I? D A , H? ?I > D A, H= ?H ?? , ?? J??K? =? . =? > ? ? ?=? ? A E$, H %? ? H?.
?= A=J = ?? == ? >? , = ? DBA. H, ? > H =? >= H T? ?I, ?? > = > ==J = ?? >? T?=J. T?= ?? ? >? =??? = ? ?= . %?DB ? B T? ? =? > ? <J .
? ?-?- .
? %?: %?DB %?DB ? >>?J ? ? >? J =? = %?DB <== ? T?J. %?DB ?= ??, , > ? ?=?. * " C? =" ? =H =? > > =>? ?.
%?DB ?J C == = ? DBA: Q Free, web-based classes, = 7 H<, J =, >H< ? > ? H ? ? ?. 350,000 ? =J ?== ? =. Q Public training events = %?DB =. Q Private Private training >K ? ?K?N T >?, = . $? >.
? G : Q %?>?, >?? ? < H %?DB %? %?DB C= %?, H HJ ? %?DB H? J H? ? = =, =? H = mongotop, mongostat ? mongodump.
Q ==J H %?DB *= , ? =-=? J > = ? ? = >??? H ? H?>. Q ==J ? %?DB -? (??) = >>J , H =? ??J.
C>>?J * ? C?=? !? ? ??, ? ? > ? =: Q Tec echnic hnical al rresour esources ces >>?J == > ? G= G, <UH ? !*C Q Consulting pack packages ages ?= = <, > ?=? ? ?= A? %?. % = == > %?DB C?=? .
Q H =? H >= ?T? >>J, < ? C. Q J ?=? $DA, # ? I.509 ??, T=-== ?=, -T? =, ?, ?J? ?-U ? -, 15
C?=?
JN =, DBA, , H ? >< J %?DB.
F==H? =? ? ? = > > ? < >?, H= ?=? > < ? ?T %?DB ? >? >=. !? ? , J ? <=J =K > =, == ? - ?, ??? ? =? H ? =.
C? =? >, >?.>.
C? = %?DB I. 2,000 ?K? =J ? >>= , ?=? ? > ? F? 100. H ? >< J = :
* F > ?>?, = >?.> ? =@>?.>. C (>?.>/>) ?? (>?.>/??) F ?=? ?? (?J.>?.>) ? ? E? (>?.>/?) D>?? (.>?.) %?DB E? DH?= (>?.>/H?=)
%?DB E? A? HJ ? %?DB ? J ?. !N T?=J-? < ? H, , T?, ? ? HJ J ?. %?DB C= %? HJ ? %?DB ? =. ! >< %?DB J> J HJ = ? =< >?? >. %?DB ?= = J >? J =J>? ? < ??? >=J. ! ?= > %?DB ??, H== %?DB C= %?. D=>? = J ? ??? <=J. ! J >= < H ? =J J . %?DB C?=? < J ? , = J ? >? ? ?, = J =, ? J ? J ?I =. %?DB ?? = J > %?DB I, > ? ? >?-= J> =.
H < Q = A= Q ??, D.C. Q $?? Q D=? Q B=? Q J?J Q = A 866-237-8815 Q !$ +1-650-440-4474 Q ?@>?.> S 2016 %?DB, !?. A== .
16