ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΡΠΏΠΏΠΈΠ½Π³ ΠΏΠΎΠ»Π΅ΠΉ
ElasticSearch β mapping ΠΈ ΠΏΠΎΠΈΡΠΊ Π±Π΅Π· ΡΡΡΠΏΡΠΈΠ·ΠΎΠ²
Π ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ mapping. ΠΡΠΆΠ΅Π½ Π»ΠΈ ΠΎΠ½ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ . Π― ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΅Π³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ Ρ ΠΈΡΡΠΎΡΡΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Π² ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΈΡΠΊΠ° Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅.
ΠΡΠ΅ΠΌ, ΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ElasticSearch, ΠΏΡΠΎΡΡ ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
Π ΠΏΡΠΎΡΠ»ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΎΠ±ΡΠΈΠΌ Π³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ»Π° Π²ΡΠ±ΡΠ°Π½Π° ΡΡΠ° ΡΠ΅ΠΌΠ°. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΏΡΡΡ Π³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΎΡΡ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠ°ΡΡΠΈΠ΅. Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΈΠΊΠ» ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ ES, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠ΅.
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ mapping?
Mapping ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π² sql Π±Π°Π·Π°Ρ Π΄Π°Π½Π½ΡΡ . ΠΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, source ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π½ΠΈΠΆΠ΅.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ mapping ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π·Π° ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅.
Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ mapping Π½Π°ΠΏΡΡΠΌΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅:
Π ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ mapping ΡΡΠ°Π·Ρ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²:
Π’Π°ΠΊ Π»ΠΈ ΠΎΠ½ Π½ΡΠΆΠ΅Π½?
ES Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΡΠΎΡΡΡΡ
ΡΠ»ΡΡΠ°Π΅Π² ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
Π²Π΅ΡΠ½ΠΎ.
Π’Π°ΠΊ Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ?
ΠΡ Π²ΠΎ ΠΏΠ΅ΡΠ²ΡΡ
, ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠΈΡΡΠΎΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅.
ΠΠ°ΠΆΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ mapping ΡΡΠΎ ΡΠΎΠ½ΠΊΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΈΡ
ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, Ρ.ΠΊ. ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π΅, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
ΠΡΠΌΠ°Ρ, Π²ΡΠ΅ ΡΠΆΠ΅ Π΄ΠΎΠ³Π°Π΄Π°Π»ΠΈΡΡ, ΠΎ ΡΡΠΌ ΠΏΠΎΠΉΠ΄ΡΡ ΡΠ΅ΡΡ. ΠΠ°Π·ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ² Π²ΡΠ΅Π³ΠΎ 7: string, integer/long, float/double, boolean, null
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ _source = true ΠΈ Π²Π΅ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ. Π ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Ρ ΡΠ°Π½ΠΈΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Π²Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π½Π΅ ΠΎΠ³ΡΠΎΠΌΠ΅Π½. Π’ΠΎΠ³Π΄Π° Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΠΏΡΠΎΡΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΡΠΎΠ³Π°ΡΡ ΡΡΠΎ ΠΏΠΎΠ»Π΅ Π±Π΅Π· Π²Π΅ΡΠΊΠΎΠΉ Π½Π° ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Ρ.
Π’ΠΈΠΏΡ array/object/nested
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΠΏΠΎΠ»Ρ, Π½ΠΎ ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΏ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π²Π½ΡΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°, Π²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
Nested(Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ) type
ΠΠΎ ΡΡΡΠΈ, ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π²Π½ΡΡΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ? ΠΡΠ»ΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΊΠ°ΡΡ name = blue && count>5 ΡΠΎ ΡΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½, ΡΡΠΎ Π±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ, ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ nested ΡΠΈΠΏ.
ΠΡΠΈΠΌΠ΅Ρ:
Π£ΠΊΠ°Π·ΡΠ²Π°ΡΡ properties Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ES ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ nested ΡΠΈΠΏΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ nested query ΠΈΠ»ΠΈ nested filter.
Multi-fields
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 1.0 ΡΡΠΎΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠΎ Π²ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΌ ΡΠΈΠΏΠ°ΠΌ (ΠΊΡΠΎΠΌΠ΅ nested ΠΈ object).
Π§ΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ? ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ.
ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½ΡΠΆΠ½ΠΎ? Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΠΎΠ»Π΅, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈ ΠΈΡΠΊΠ°ΡΡ ΠΈ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΏΠΎΠΈΡΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π½Π° ΠΏΠΎΠ»Π½ΡΡ ΠΊΠ°ΡΡΡΠΊΡ, Π° Π΅ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ, ΡΠΎ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π½Π΅ ΠΏΠΎ ΡΡΡΡΠΌ Π΄Π°Π½Π½ΡΠΌ, Π° ΠΏΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³ ΠΏΠΎΡΠ»Π΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π±ΡΠ΄Π΅Ρ Β«Π‘Π°Π½ΠΊΡΒ» ΠΈ Β«ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³Β» (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π³ΠΊΠ° ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ, Π½ΠΎ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΎΠΉΠ΄ΡΡ). ΠΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ»Ρ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½Π΅ ΡΠΎ, ΡΡΠΎ Ρ
ΠΎΡΠ΅Π»ΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Β«titleΒ» Π·Π° ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΠΈ ΠΊ Β«rawΒ» Π·Π° Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΈ Π»ΡΠ±ΡΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ Ρ ΡΠΌΠΎΠ³ Π΄ΠΎΡ ΠΎΠ΄ΡΠΈΠ²ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ Π³Π»Π°Π²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ mapping’a Π² ES. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ, ΡΠ°Π΄ Π±ΡΠ΄Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ.
Π§Π΅ΡΠ½ΠΎΠ±ΡΠΎΠ²ΠΎΠ² ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠ½Π°Π»ΠΈΡΠΈΠΊ
Big Data Mapping: ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Data Science, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Big Data mapping.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈ Π³Π΄Π΅ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΠ½ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° Ρ ΡΠ°Π½ΡΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Β«1Β» Π² ΠΏΠΎΠ»Π΅ Β«Π΄Π΅ΡΠΈΒ» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈΡ Π½Π°Π»ΠΈΡΠΈΠ΅. Π Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΠΈ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«TrueΒ», Π° Π² ΡΡΠ΅ΡΡΠ΅ΠΉ β ΡΠ»ΠΎΠ²ΠΎΠΌ Β«Π΄Π°Β». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ Π² Π΄ΡΡΠ³ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ , Ρ.Π΅. Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΌΡΠΏΠΏΠΈΠ½Π³Π° Π΄Π°Π½Π½ΡΡ (ΠΎΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ map β ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅). Π ΡΠΈΡΠΎΠΊΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠ°Π·Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ . ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ [1].
ΠΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ, Data Management, ΡΡΠ°ΠΊΡΡΠ΅Ρ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ Π·Π°Π΄Π°Ρ [2]:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡ ΡΡ Π΅ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡ Π΅ΠΌΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π·Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ, Π²ΡΡΠ²ΠΈΠ² ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ [3].
Π‘ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° Π΄Π°Π½Π½ΡΡ [4]:
Π Big Data ΠΌΡΠΏΠΏΠΈΠ½Π³ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΠΎΠ·Π΅ΡΠΎ Π΄Π°Π½Π½ΡΡ (Data Lake) ΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (DWH, Data Warehouse). Π§Π΅ΠΌ Data Lake ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ DWH, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ Π·Π΄Π΅ΡΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ETL-ΠΏΡΠΎΡΠ΅ΡΡΠ° (Extract, Transform, Load) Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ (ΡΠΈΡ. 1). Π ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ Π‘Π£ΠΠ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ Π² ΡΠ°Π·Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΡ Π½ΡΠΆΠ½ΠΎ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ (1:1, *:1, 1:* ΠΈΠ»ΠΈ *:*) [5].
Π ΠΈΡ.1. ΠΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠ°Π±Π»ΠΈΡ
Π Data Science ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΡΠ°ΠΏ ΠΈΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊ ML-ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° Data Scientist ΠΎΠ±ΠΎΠ³Π°ΡΠ°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ· ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ², ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ΠΎΠΌ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π΄Π°ΡΠ° ΠΌΡΠΏΠΏΠΈΠ½Π³Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΡΡ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄Π°Π»Π΅Π΅.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄Π°ΡΠ° ΠΌΡΠΏΠΏΠΈΠ½Π³Π°
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΡ ΠΌΡΠΏΠΏΠΈΠ½Π³Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ² [3]:
ΠΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π° ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ β ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΡ ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΊΠ°ΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠΌΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ . Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅Π΅ΡΡΡ, ΡΠΎ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ [2]. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠ°ΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ ΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ°ΠΏΠΎΠ² [4]:
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π²ΡΠ΄Π΅Π»ΡΡΡ 3 ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ [2]:
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΏΠΎΠ»ΡΠ°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡ Π΅ΠΌ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ΅Π»Π΅Π²ΡΡ ΡΡ Π΅ΠΌΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈΠ΄Π°ΡΠΈΠΈ. ΠΠ°ΡΠ΅ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡ Π΅ΠΌΡ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²Π½ΠΎΡΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡ Π΅ΠΌ Π΄Π°Π½Π½ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄ Π½Π° C++, C # ΠΈΠ»ΠΈ Java Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ (ΡΠΈΡ. 3) [3].
Π ΠΈΡ. 3. ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡ
Π΅ΠΌ Π΄Π°Π½Π½ΡΡ
Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΌΡΠΏΠΏΠΈΠ½Π³Π°
ΠΠ°Π»Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΠ°ΠΊ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π²ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° 3 ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ [6]:
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ 3 ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΡΡΡΠ½ΠΎΠΉ (GUI ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅), data-driven ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΡΠΏΠΏΠΈΠ½Π³ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΡ ΡΠ΅Π΅ΡΡΡΠΎΠ² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠΈ. Π ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π΅ΡΡΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅, ΠΎΡΡΠ°ΡΠ»Π΅Π²ΡΠ΅ ΠΈΠ»ΠΈ Π³ΠΎΡΠΎΠ΄ΡΠΊΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ [7] Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π½Π°ΠΏΡΡΠΌΡΡ ΠΊΠΎΡΡΠ΅Π»ΠΈΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ DWH. ΠΠΎ, Π½Π°ΡΡΠ΄Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌΠΈ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌΠΈ Π΄Π°ΡΠ°ΡΠ΅ΡΠ°ΠΌΠΈ, ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ DS-Π·Π°Π΄Π°ΡΠ°Ρ .
ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΊΡΠΎΡΡ:
Π Π΅Π·ΡΠΌΠ΅
ΠΡΠ°ΠΊ, ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ β ΡΡΠΎ Π²Π°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π΄Π»Ρ Data ScientistβΠ°. ΠΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊ ML-ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΎΠ±ΠΎΠ³Π°ΡΠ΅Π½ΠΈΠΈ Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠ². Π ΡΠ»ΡΡΠ°Π΅ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΡΡΠ½ΡΡ ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΌΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ Python-ΡΠΊΡΠΈΠΏΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π² ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ ΠΈ ΠΎΠ·Π΅Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΡΠΎΠΌΡ Π·Π½Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°ΡΠ° ΠΌΡΠΏΠΏΠΈΠ½Π³Π° ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ°ΠΊ Data ScientistβΡ, ΡΠ°ΠΊ ΠΈ Data EngineerβΡ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Ρ ΡΠ΅Π»ΡΡ ΠΈΠ·Π±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΡ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΡ ΡΡ ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π·Π°Π΄Π°ΡΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΡΡ (Data Quality) [4]. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Data Quality ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΡΡΡΠ°ΡΠ΅Π³Π° ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ° ΠΏΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΌΠ°ΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Data-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ.
Elasticsearch β Π£ΡΠΎΠΊ 3.1 Mapping: ΡΡ Π΅ΠΌΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΠ°ΠΏΠΏΠΈΠ½Π³ (ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅) β ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ½ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ»Π΅ΠΉ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅. Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ»Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, string, integer ΠΈ Ρ.Π΄.) ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΡΡ Π΅ΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ Π² SQL, Π²Π°ΠΆΠ½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ ΡΡ Π΅ΠΌΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ°ΠΊ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΡΠΈΠΏ Π² Elasticsearch ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠ°Π±Π»ΠΈΡΡ SQL, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΡΡΠΏΠΏΠΈΡΡΠ΅Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΠΏ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠΈΠΏ Π΄Π»Ρ Π·Π°ΠΊΠ°Π·ΠΎΠ²). ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ ΡΡ Π΅ΠΌΡ. ΠΠ°Π»ΠΈΡΠΈΠ΅ ΡΠ°Π·Π½ΡΡ ΡΡ Π΅ΠΌ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Apache Lucene, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡ Π²Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ½ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Elasticsearch.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠ°Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Elasticsearch, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΈΡ ΡΡ Π΅ΠΌΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅:
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
ΠΠΎΠ³Π΄Π° Π²Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, Elasticsearch Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»Π΅ΠΉ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΎΡΠ²Π΅ΡΠ°, ΡΡΠΎ Elasticsearch ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ» ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ age ΠΊΠ°ΠΊ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ΅, date_of_birth ΠΊΠ°ΠΊ Π΄Π°ΡΡ ΠΈ name ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅. ΠΠΎΠ³Π΄Π° Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΎΠ½ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ»Π΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ, ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ, ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌ ΠΈΠ»ΠΈ Π΄Π°ΡΠΎΠΉ.
Π‘ΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ, Π½ΠΎ Π΄Π»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°ΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΎΠ½ΠΎ Π»ΡΠ±ΡΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌ Π΄Π°Ρ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΡΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π΄Π°Ρ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΡ Π½ΠΈΠΆΠ΅:
Π₯ΠΎΡΡ Elasticsearch ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π»ΡΠ±ΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΡΡΠ΅ΠΉ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π»ΡΠ±ΡΡ ΠΏΠΎΠ»Π΅ΠΉ, Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ. Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ ΡΠ°Π·Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
ΠΠ½ΠΎΠ³Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠ»ΠΈ Π½Π°ΡΠ°Π»ΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ Π΄Π°ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π½Π° Π΄Π°ΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ°. Π§ΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ
Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡ Π΅ΠΌΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π°.
API ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ HTTP, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° β PUT.
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΏΡΠΎΡΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠ²Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° / ΠΏΠΎΠ»Ρ
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΎ ΡΡ Π΅ΠΌΠΎΠΉ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π°. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ ΠΈ Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ, Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ history Ρ ΡΠ΅Π»ΡΡ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΌ ΠΈΡΡΠΎΡΠΈΡ Π·Π°Ρ ΠΎΠ΄ΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° _mapping Π² ΠΊΠΎΠ½ΡΠ΅ URL-Π°Π΄ΡΠ΅ΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠΌΡ ΡΠΈΠΏΠ° history Π² example3 ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ip_address ΠΏΠΎΠ»Π΅ ΠΊΠ°ΠΊ ΡΠΈΠΏ ip, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΠΏΡΠΎΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ ΠΏΠΎ IP-Π°Π΄ΡΠ΅ΡΡ. ΠΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ip Π² ΡΠΊΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΡ
API ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡ Π΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΡΠΈΠΏΠ°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ HTTP, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° β GET.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΡΠ²Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² Π² example3 :
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΡ
Π‘Ρ Π΅ΠΌΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°. ΠΠΎΠ³Π΄Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΡΡΡΡ, ΠΎΠ½ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Ρ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΡ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠΎΠ»Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , Π½ΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Reindex API. ΠΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π² 5 ΡΡΠΎΠΊΠ΅. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ ΡΠΆΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ .
Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ
Π ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΌ ΠΌΠΈΡΠ΅ SQL ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ integer, boolean ΠΈ Ρ. Π΄. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π°Π½Π½ΡΠ΅ Π² Elasticsearch ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΊΠ°ΠΊ JSON, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ Ρ. Π΄.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ :
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ :
Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ :
Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Geo:
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ :
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΌΠ΅ΡΠ°-ΠΏΠΎΠ»ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅.
ΠΠ΅ΡΠ°-ΠΏΠΎΠ»Ρ
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌ, ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠ°-ΠΏΠΎΠ»Ρ, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠ°-ΠΏΠΎΠ»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°:
ΠΠ°ΠΊ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½ΡΠ»Π΅Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΠΎΠ³Π΄Π° Elasticsearch Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ JSON Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅, ΠΎΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΠΎ ΠΏΠΎΠ»Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ. ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΊΠ°ΡΡ Π²ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Elasticsearch Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ½ null_value Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΠΈ ΠΏΠΎΠ»Π΅. Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ.
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°
ΠΠΎΠΈΡΠΊ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»Π΅ΠΌ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅
ΠΠΎΠ³Π΄Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, Elasticsearch ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅Ρ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΎΠ΄Π½Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΡΡΠΎΠΊΡ ( «john jake iphone 2017-02-08» ) Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ _all ΠΏΠΎΠ»Ρ. ΠΠ°ΠΏΡΠΎΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π·Π°ΠΊΠ°Π·ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ, item_title ΠΊΠ°ΠΊ iphone ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»Π΅ _all Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ΅:
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°ΡΡΠΈ ΡΡΠΎΠΊΠ° ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ°.
Nhibernate: ΠΠ°ΡΠΈΠ°Π½ΡΡ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ΠΎΠ², Π²Π°ΡΠΈΠ°Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ΅ΡΠΈΠ» ΡΠΎΠ±ΡΠ°ΡΡ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ Π²ΡΡ ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡ, ΡΠΎΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π»ΠΈΠ±ΠΎ Π² ΠΊΠΎΠ΄Π΅. ΠΡΠΎ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ΠΈ ΠΈ ΡΠ²ΡΠ·ΠΈ Π² NHibernate. ΠΡΠ°ΠΊΠ°Ρ ΡΡΠ°ΡΡΡ-ΠΏΠ°ΠΌΡΡΠΊΠ° Π±ΡΠ΄Π΅Ρ. Π― ΡΠ΅ΡΠΈΠ» Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΈΠ»ΡΠ½ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ, (ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎ NHibernate Queries Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ), ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΡΠ°ΡΡΡ (Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ), Π½Π° ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΎΠΏΠΈΡΠ°Π»ΡΡ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΡΠ°ΡΡΡ-ΠΏΠ°ΠΌΡΡΠΊΡ. ΠΠ°Π΄Π΅ΡΡΡ, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π²Π°ΠΌ.
ΠΠ°ΡΠΈΠ°Π½ΡΡ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ΠΎΠ².
1.XML β ΡΠ°ΠΉΠ»Ρ
Π‘Π°ΠΌΡΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ
ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ΠΎΠ².
ΠΠ»ΡΡΡ:
+ ΠΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅.
+ ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ (Attributes ΠΈ Fluent) ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ
xml ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠΈΠ½ΡΡΡ:
β ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ intellisense(!).
β ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡ ΡΡΠΎ ΠΆ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅Π³ΠΎ.
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ NHibernate, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΡ Models->NHibernate ΡΠ°ΠΉΠ» Nhibernate.cfg.xml
Π― ΡΠ°Π±ΠΎΡΠ°Ρ Ρ SQL Server, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ±ΡΠ°Π» SqlClientDriver. ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Π΄ΡΡΠ³ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
, ΡΠΎ ΡΠΏΠΈΡΠΎΠΊ NHibernate.Driver’ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ NHibernate.Driver
Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ ΠΌΠ΅Π½Ρ SQL Server 2008 ΡΡΠΎΠΈΡ, Ρ Π²ΡΠ±ΡΠ°Π» MsSql2008Dialect, Π²ΡΠ΅ Π΄ΠΈΠ°Π»Π΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ SQL Dialects
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π² SQL Server ΠΠ NhibernateTutor ΠΈ ΠΏΡΠΎΠΏΠΈΡΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π½Π΅ Π±ΡΠ΄Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΌΠΈ, NHibernate’ΠΎΠΌ.
ΠΠ°Π»Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡ Models ΠΊΠ»Π°ΡΡ Book.cs
(P.S. ΠΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠ»Ρ Π΄ΠΎΠ»ΠΆΡ Π±ΡΡΡ virtual β ΡΡΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ lazy load (Π»Π΅Π½ΠΈΠ²ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ) ΠΈ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ NHibnerateβΠΎΠΌ Π²ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ .)
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π»ΠΈ xml-ΠΌΠ°ΠΏΠΏΠΈΠ½Π³, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΊΠ»Π°ΡΡ NHibernateHelper.cs.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ISessionConfiguration Π·Π΄Π΅ΡΡ ISessionFactory Configuration
Π ΠΊΠΎΠ½ΡΠ΅ Π²ΡΠ΅Ρ
ΡΡΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ NHibernate ΡΠΎΠ·Π΄Π°ΡΡ Π² ΠΠ ΡΠ°Π±Π»ΠΈΡΡ Book. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΠ΅ Controllers ΠΊΠ»Π°ΡΡ HomeController ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄.
ΠΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅Ρ View Π½Π°Ρ ΡΠ΅ΠΉΡΠ°Ρ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ, ΠΏΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡΠΎΠΉ. ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΠ SQL Server ΠΈ (Π²ΡΠ°Π»Ρ!) Π²ΠΈΠ΄ΠΈΠΌ Π² ΠΠ NhibernateTutor ΡΠ°Π±Π»ΠΈΡΡ Book. Π’Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ (nvarchar(255) ΡΠ΄Π΅Π»Π°ΡΡ nvarchar(MAX), Π½ΠΎ Π½Π΅ int!). ΠΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ Π΅Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π½Π°ΡΠ°Π»Π΅ Π½Π°ΡΡΡΠΎΠΈΠΌ ΡΠ²ΡΠ·ΠΈ (ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠ²ΡΠ·Ρ ΠΎΠ΄ΠΈΠ½-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡ, Π±ΡΠ΄Π΅Ρ Π²ΡΠ»Π΅ΡΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ Mind Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΠ° Book) ΠΈΠ»ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΠΌΠΈ Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ.
ΠΠ½ΠΎΠ³ΠΈΠ΅-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡ (ΠΎΠ΄ΠΈΠ½-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ)
Book.cs | Series.cs |
---|---|
Book.hbm.xml | Series.hbm.xml |
Π’Π°ΠΊ, Π½Ρ ΡΡΠΎ ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ? ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ΅Π³ Β«bagΒ» ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π°Ρ IList, column=Β«Series_idΒ» ΡΠΎΠ·Π΄Π°Π΅Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Book ΡΡΠΎΠ»Π±Π΅Ρ Series_Id, ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅.
ΠΠ΄ΠΈΠ½-ΠΊ-ΠΠ΄Π½ΠΎΠΌΡ
Book.cs | Mind.cs |
---|---|
Book.hbm.xml | Mind.hbm.xml |
Π Π²ΠΎΡ ΡΡΡ ΡΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ! constrained=Β«trueΒ» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΡΠ°Π±Π»ΠΈΡΡ Book Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Mind, ΡΠΎ Π΅ΡΡΡ Id ΡΠ°Π±Π»ΠΈΡΡ Book Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π²Π΅Π½ Id ΡΠ°Π±Π»ΠΈΡΡ Mind. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Book, Π·Π°Π±ΡΠ² ΠΏΡΠΎ ΡΠ°Π±Π»ΠΈΡΡ Mind, ΡΠΎ Nhibernate Π²ΡΠ΄Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅. Π’ΠΎ Π΅ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Book ΠΎΠ±ΡΠ΅ΠΊΡ Mind. ΠΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Mind ΠΎΡΠ΅Π½Ρ ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Book ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ Ρ ΠΌΠ΅Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Mind ΠΊΠΎΠ΄ΠΎΠΌ Π½ΠΈΠΆΠ΅, Π° Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°Π±Π»ΠΈΡΡ Mind Ρ Π²ΡΠ΅Π³Π΄Π° ΡΡΠΏΠ΅Ρ.
Cascade = Β«AllΒ» ΠΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΈΡΡ Book ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° Mind. ΠΡΠ°ΠΊ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π²ΡΠ΅ ΡΠ²ΡΠ·ΠΈ, ΠΏΠΎΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡ , ΡΠΎΡ ΡΠ°Π½ΠΈΠ², ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π² ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΠ² Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎΠ΄ ΡΠΏΠΎΠΉΠ»Π΅ΡΠΎΠΌ Π½ΠΈΠΆΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΠ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΈΡ , ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² HomeController ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (ΠΠ΅Π½ΡΠΆΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ):
ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
2. ΠΠ’Π ΠΠΠ£Π’Π«
Π―Π²Π»ΡΠ΅ΡΡΡ ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ (add-in) ΠΊ Nhibernate.
ΠΠ»ΡΡΡ:
+ ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ (*.hbm.xml), ΠΏΠΈΡΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΡΡΠ°Π·Ρ Π½Π°Π΄ ΠΏΠΎΠ»ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°, ΡΠΎ Π΅ΡΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ΠΈ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ ΡΡΠ΄ΠΎΠΌ.
+ ΠΠΎΠ΄Π΄ΡΠ΅ΠΆΠΊΠ° Intellisense 50/50(!). ΠΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π°ΡΡΡΠΈΠ±ΡΡΠΎΠ² (ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Name), Π½ΠΎ Π½Π΅Ρ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ.
+ ΠΠ΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Ρ xml-ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° ΠΡΡΠΈΠ±ΡΡΡ.
ΠΠΈΠ½ΡΡΡ:
β Π£Ρ
ΡΠ΄ΡΠ°Π΅ΡΡΡ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
β ΠΡΡΡΡΡΠ²ΠΈΠ΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
β Π£ ΡΠ²ΠΎΠΉΡΡΠ², ΡΠΎΡΡΠΎΡΡΠΈΡ
ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ 1 Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ.
Π§ΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ? ΠΠ΅ΡΠ²ΠΎΠ΅, Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π·Π°ΠΌΠ°ΠΏΠΈΡΡ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ. ΠΡΠΎΡΠΎΠ΅, Π²Ρ ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΡ Id(0. ) ΠΈ Generator(1. )? ΠΠ½Π΄Π΅ΠΊΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ°. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ NHMA Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ *.hbm.xml ΡΠ°ΠΉΠ»Ρ Π½Π° Β«Π»Π΅ΡΡΒ» ΠΈΠ· Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΡΠΏΠΈΡΡΠ²Π°ΡΡ xml-ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. (Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π°ΡΡΠΈΠ±ΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ reflection).
Π£Π΄Π°Π»ΠΈΠΌ ΠΈΠ· ΠΠ ΡΠ°Π±Π»ΠΈΡΡ Book (ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ ΡΠ΄Π°Π»ΡΡΡ, ΡΡΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.) ΠΠ°ΠΏΡΡΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈ Π΅ΡΠ»ΠΈ Π² ΠΠ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ°Π±Π»ΠΈΡΡ Book, ΡΠΎ ΠΎΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡΡΡ.
ΠΡΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄Ρ ΠΏΠΈΡΠ°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Ρ *.hbm.xml ΡΠ°ΠΉΠ»ΠΎΠ², Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅, ΡΡΠΎ Π΄Π»Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ.
2.1 ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΡ (Π ΡΠ°Π±Π»ΠΈΡΠ°Ρ
)
ΠΠ½ΠΎΠ³ΠΈΠ΅-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ
Book.cs | Author.cs |
---|---|
ΠΠ½ΠΎΠ³ΠΈΠ΅-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡ, ΠΎΠ΄ΠΈΠ½-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ
Book.cs | Series.cs |
---|---|
ΠΠ΄ΠΈΠ½-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡ
Book.cs | Mind.cs |
---|---|
3. Mapping ByCode
ΠΠ»ΡΡΡ:
+ ΠΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π°ΡΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ)
+ ΠΠΎΠ΄Π΄ΡΠ΅ΠΆΠΊΠ° Intellisense 100(!).
+ ΠΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ *.hbm.xml-ΡΠ°ΠΉΠ»Ρ ΠΈ Nhibernate.cfg.xml
+ ΠΠ·ΡΠ»ΠΈ Π»ΡΡΡΠ΅Π΅ Ρ Fluent-Nhibernate, (Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ) ΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ΄ *.hbm.xml β ΡΠ°ΠΉΠ»Ρ.
ΠΠΈΠ½ΡΡΡ:
β Π£Π±ΡΠ°Π»ΠΈ Ρ cascade Save-Update ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Cascade.Persist, Π½ΠΎ Π²ΡΡ-ΡΠ°ΠΊΠΈ).
β Π‘ΡΡΡΠΊΡΡΡΠ° (Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ) Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΎΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ *.hbm.xml β ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ°ΠΌΠ΅ΡΠΈΠ»ΠΈ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ? Π‘ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ Nhibernate. Π xml-ΡΠ°ΠΉΠ»Π°Ρ Π±ΡΠ»ΠΈ *.hbm.xml ΡΠ°ΠΉΠ»Ρ ΠΈ nhibernate.cfg.xml ΡΠ°ΠΉΠ», Π² Attributes ΡΡΠ°Π»ΠΈ Π½Π΅ Π½ΡΠΆΠ½Ρ *.hbm.xml ΡΠ°ΠΉΠ»Ρ, Π² Mapping byCode ΡΠΆΠ΅ ΡΡΠ°Π» Π½Π΅ Π½ΡΠΆΠ΅Π½ nhibernate.cfg.xml. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ±Π΅ΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅ (Π΄Π° ΠΈ Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΎΠ½ Π²ΠΎΠΎΠ±ΡΠ΅?).
ΠΠ»Π°ΡΡ Book ΠΈ Π΅Π³ΠΎ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
3.1 ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΡ (Π ΡΠ°Π±Π»ΠΈΡΠ°Ρ
)
ΠΠ½ΠΎΠ³ΠΈΠ΅-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ
Book.cs | Author.cs |
---|---|
BookMap.cs | AuthorMap.cs |
ΠΠ½ΠΎΠ³ΠΈΠ΅-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡ, ΠΎΠ΄ΠΈΠ½-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ
Book.cs | Series.cs |
---|---|
BookMap.cs | SeriesMap.cs |
ΠΠ΄ΠΈΠ½-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡ
Book.cs | Mind.cs |
---|---|
BookMap.cs | MindMap.cs |
4. FLUENT
ΠΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ XML- ΡΠ°ΠΉΠ»ΠΎΠ² NHibernate. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ XML-ΡΠ°ΠΉΠ»Ρ, Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ΠΈ Π² ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
C# ΠΊΠΎΠ΄Π΅ (ΡΠ΅ΡΠ΅Π· Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ). ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ Π΅ΡΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³, ΡΠ»ΡΡΡΠ°Π΅ΡΡΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΈ Π»Π΅Π³ΠΊΠΎΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
ΠΠ»ΡΡΡ:
+ 100% ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° intellisense!
+ ΠΠ΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Fluent-Nhibernate
+ ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
+ ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ» Nhibernate.cfg.xml, Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π² NhibernateHelper.
ΠΠΈΠ½ΡΡΡ:
β ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ NHibernate Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π°.
Π ΡΡΠΎΠΌ NhibernateHelper.cs ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΠ ΠΌΡ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π·Π΄Π΅ΡΡ. Π Π΄Π°, ΡΡΡ ΠΏΡΠΈΡΡΡΡΠ²Π΅ΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠ»Π°ΡΡ Book.cs
ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊ Π½Π΅ΠΌΡ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³-ΠΊΠ»Π°ΡΡ
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ Controllers ΠΊΠ»Π°ΡΡ HomeController ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π»ΡΠ±ΡΡ View, ΠΈ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² SQL Server Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° Book.
4.1 ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΡ (Π ΡΠ°Π±Π»ΠΈΡΠ°Ρ
)
ΠΠ½ΠΎΠ³ΠΈΠ΅-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ
Book.cs | Author.cs |
---|---|
BookMap.cs | AuthorMap.cs |
ΠΠ½ΠΎΠ³ΠΈΠ΅-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡ, ΠΎΠ΄ΠΈΠ½-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ
Book.cs | Series.cs |
---|---|
BookMap.cs | SeriesMap.cs |
ΠΠ΅ΡΠΎΠ΄ References ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Β«ΠΠ½ΠΎΠ³ΠΈΠ΅-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡΒ», Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅ Β«ΠΠ΄ΠΈΠ½-ΠΊΠΎ-ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ» Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ HasMany.
ΠΠ°ΡΠΈΠ°Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² (NHibernate Queries)
ΠΠ°ΠΏΡΠΎΡ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ
Lists with restrictions
Π― Ρ ΠΎΡΠ΅Π» ΡΠ΄Π΅Π»Π°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎ NHibernate Query, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ JoinΡ, Projecting ΠΈ Π΄ΡΡΠ³ΠΈΠ΅, Π½ΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ ΠΏΡΠΎ ΡΡΠΎ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½Π΅ΠΉΡΠΈΠ΅ ΡΡΠ°ΡΡΠΈ NHibernate Queries ΠΈ NHibernate More Queries
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ QueryOver, ΡΠΎ Π²ΠΈΠ΄Ρ Π΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ QueryOver in NH3
Π‘ΡΠ°ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠΎΠ½ΡΡ, ΠΈ ΠΌΠ½Π΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π·Π°Π²Π΅ΡΡΠΈΡΡ Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠΌ.
Lazy ΠΈ eager-loading (Β«ΠΠ΅Π½ΠΈΠ²ΡΠ΅Β» ΠΈ Β«ΠΠ°Π΄Π½ΡΠ΅Β» Π·Π°Π³ΡΡΠ·ΠΊΠΈ)
Lazy loading ΠΈ eager loading β ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ NHibernate Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π΄Π°Π½Π½ΡΡ
Π² navigation properties ΡΡΡΠ½ΠΎΡΡΠΈ
->Lazyloading β Π»Π΅Π½ΠΈΠ²Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°. ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΡΡΠ½ΠΎΡΡΠΈ (Book), ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ navigation property (Book.Genres), ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΊ Π±Π°Π·Π΅ ΡΠΎΠ²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ²: ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π΄Π°Π½Π½ΡΡ
.
-> Eagerloading β ΠΆΠ°Π΄Π½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°. ΠΠ°Π½Π½ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΡΡΠ½ΠΎΡΡΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠΌ join, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ»Ρ Β«ΠΆΠ°Π΄Π½ΠΎΠΉΒ» Π·Π°Π³ΡΡΠ·ΠΊΠΈ NHibernate ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Fetch strategies.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ EagerLoading ΠΈ LazyLoading Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Query Over.
—Query Over β ΠΊΠΎΠ΄ Lazyloading Π·Π°Π³ΡΡΠ·ΠΊΠΈ—
—Query Over β ΠΊΠΎΠ΄ EagerLoading Π·Π°Π³ΡΡΠ·ΠΊΠΈ—
ΠΊΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅ΡΠ΅, ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ LeftJoin ΠΊΠ°ΠΊ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Fetch ΡΡΠ°Π·Ρ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Book Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΡΠΎ Fecth β ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ Nhibernate Fetch strategy Π° ΠΏΡΠΎ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ lazy ΠΈΠ»ΠΈ eager loading β Π·Π΄Π΅ΡΡ ΠΡΡΡΠΈΠ±ΡΡΡ lazy, fetch ΠΈ batch-size. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΡΠ°ΡΡΡ Π½Π° NhibernateInfo β lazy-eager loading
Π‘ΡΠ°ΡΡΡ ΠΏΠΎΠ΄ΠΎΡΠ»Π° ΠΊ ΠΊΠΎΠ½ΡΡ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.