ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π΅ вградСният Π‘Π£Π‘Π” libmdbx 0.13

ИздадСно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libmdbx 0.13.1 (MDBX) с рСализация Π½Π° високопроизводитСлна ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ клас ΠΊΠ»ΡŽΡ‡-стойност. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° libmdbx Π΅ разпространСн ΠΏΠΎΠ΄ лицСнзия Apache 2.0. ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΡΡ‚ сС всички Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ руският Π•Π»ΡŒΠ±Ρ€ΡƒΡ 2000. Π—Π° libmdbx сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΎ API Π·Π° C++, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° популярни Π΅Π·ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno ΠΈ Scala.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ libmdbx прСдставлява дълбока ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π‘Π£Π‘Π” LMDB ΠΈ Π½Π°Π΄ΠΌΠΈΠ½Π°Π²Π° своя ΠΏΡ€Π°Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π» ΠΏΠΎ надСТдност, Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΈ производитСлност. Π’ сравнСниС с LMDB, Π² libmdbx сС отдСля голямо Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° качСството Π½Π° ΠΊΠΎΠ΄Π°, стабилната Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° API, тСстванСто ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. ΠŸΡ€Π΅Π΄Π»Π°Π³Π° сС инструмСнт Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° цСлостта Π½Π° структурата Π½Π° Π‘Π” с някои Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅. Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΎ libmdbx ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ACID, строга сСриализация Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅ с Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΏΠΎ ядра Π½Π° ЦПУ. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° компактификация, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π‘Π” ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° заявкитС ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ (estimate ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ).

Основни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • Бмяна Π½Π° Π»ΠΈΡ†Π΅Π½Π·Π° Π½Π° ΠΊΠΎΠ΄Π° ΠΎΡ‚ OpenLDAP Public License Π½Π° Apache 2.0.
  • Π Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° API Π½Π° курсоритС с ΠΏΠΎ-ΡƒΠ΄ΠΎΠ±Π½ΠΈ ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π΅ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с условията <, =, > ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° Π΄Π²ΠΎΠΉΠΊΠΈ ΠΊΠ»ΡŽΡ‡-стойност. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mdbx_cursor_unbind() ΠΈ mdbx_txn_release_all_cursors() Π·Π° гъвкаво ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° курсоритС Π² сцСнарии Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°, Π·Π° намаляванС Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ mdbx_cursor_scan() ΠΈ mdbx_cursor_scan_from() Π·Π° сканиранС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ ΠΈ намаляванС Π½Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ.
  • ΠŸΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° курсоритС Π·Π° ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π·Π° ΠΏΠΎ-Ρ€Π΅Π΄ΠΎΠ²Π΅Π½ ΠΊΠΎΠ΄ ΠΈ намаляванС Π½Π° количСството разклонСния ΠΈ машинни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
  • ΠŸΡ€Π΅Π½ΠΎΡ Π½Π° функционалността Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° mdbx_chk Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° функция mdbx_env_chk() Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° цСлостта Π½Π° структурата Π½Π° Π‘Π”, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ с Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.
  • ΠžΠΏΡ†ΠΈΡΡ‚Π° MDBX_opt_gc_time_limit Π·Π° ΠΏΠΎ-гъвкаво ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°Π½ΠΎ Π·Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° послСдоватСлности ΠΎΡ‚ съсСдни свободни страници Π² GC.
  • Π‘ΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° стартиранС Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² сцСнарии с голям Π±Ρ€ΠΎΠΉ DBI-Ρ…Π΅Π½Π΄Π»ΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π°Ρ‚Π°/Π»Π΅Π½ΠΈΠ²Π°Ρ‚Π° инициализация Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ слуТСбнитС Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° разрязанитС Π½Π°Π±ΠΎΡ€ΠΈ DBI-Ρ…Π΅Π½Π΄Π»ΠΈ, управляван ΠΎΡ‚ опцията Π·Π° компилация MDBX_ENABLE_DBI_SPARSE, която Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.
  • НамалСниС Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° отварянС Π½Π° DBI-Ρ…Π΅Π½Π΄Π»ΠΈ. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½ΠΎ освобоТдаванС ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π±ΡŠΡ€Π·ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° отварянС Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ, управляван ΠΎΡ‚ опцията Π·Π° компилация MDBX_ENABLE_DBI_LOCKFREE, която Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° 'ΠΏΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅' Π½Π° чСтящитС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ с тяхното измСстванС Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° стари MVCC-снимки ΠΈ прСдотвратяванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ забавянС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊΠ°. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° ΠΏΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ ΠΈ измСстванС Π½Π° ΠΏΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π΅ ΠΊΠ°ΠΊΡ‚ΠΎ допълнСниС, Ρ‚Π°ΠΊΠ° ΠΈ ΠΏΠΎ-проста Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° обратния ΠΏΠΎΠ²ΠΈΠΊ Handle-Slow-Readers. Π—Π° удобство, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ mdbx_txn_park() ΠΈ mdbx_txn_unpark() ΠΈΠΌΠ°Ρ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ позволяват исканС Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° 'распарковка' Π½Π° ΠΏΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ стартиранС Π½Π° измСстСнитС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° mdbx_copy са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ -d ΠΈ -p.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π° срСда с Π‘Π” Π² Π΄ΡŠΡ‰Π΅Ρ€Π΅Π½ процСс слСд раздСлянС/разклоняванС Π½Π° процСса Ρ‡Ρ€Π΅Π· mdbx_env_resurrect_after_fork().
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€Π΅Π½ΠΎΠΌΠ΅Ρ€Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ Ρ‡Ρ€Π΅Π· mdbx_dbi_rename() ΠΈ mdbx_dbi_rename2(). Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ функцията mdbx_enumerate_tables() Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° информация Π·Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ΠΈΡ‚Π΅ потрСбитСлски Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ.
  • Π Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° MDBX_NOSTICKYTHREADS вмСсто MDBX_NOTLS Π·Π° улСсняванС Π½Π° интСграцията с Π»Π΅ΠΊΠΈΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ/нишки, тСхния мултиплСксационСн Ρ€Π΅ΠΆΠΈΠΌ Π·Π°Π΅Π΄Π½ΠΎ с Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма.
  • Π—Π° идСнтификация Π½Π° Π‘Π” Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ UUID, Π½Π°Π»ΠΈΡ‡Π΅Π½ Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ mi_dxbid Π½Π° структурата MDBX_envinfo, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° Ρ‡Ρ€Π΅Π· mdbx_env_info_ex(). Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° информация Π·Π° Π‘Π” Π±Π΅Π· Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ отварянС Ρ‡Ρ€Π΅Π· mdbx_preopen_snapinfo().
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΈ повиквания Π±Π΅Π· функционалност vprintf(), ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опростява ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π»ΠΎΠ³Π²Π°Π½Π΅Ρ‚ΠΎ Π² ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡ†ΠΈ.
  • ДобавянС Π² API Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ mdbx_txn_copy2pathname() ΠΈ mdbx_txn_copy2fd().
  • РСструктуриранС Π½Π° изходния ΠΊΠΎΠ΄ с Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³.
  • ИзползванС Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° 'Ρ‚Π°Π±Π»ΠΈΡ†Π°' вмСсто 'subDb'.
  • ОбявлСниС Π½Π° остарСли ΠΎΠΏΡ†ΠΈΠΈ MDBX_COALESCE ΠΈ MDBX_NOTLS. Замяна Π½Π° ΡΠ±ΠΎΡ€ΡŠΡ‡Π½Π°Ρ‚Π° опция MDBX_USE_VALGRIND с ΠΎΠ±Ρ‰ΠΎ ΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ‚Π° ENABLE_MEMCHECK.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster