Выпуск Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π‘Π£Π‘Π” Apache CouchDB 3.0

Бостоялся Ρ€Π΅Π»ΠΈΠ· распрСдСлённой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Apache CouchDB 3.0, относящСйся ΠΊ классу NoSQL-систСм. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Apache CouchDB 3.0:

  • ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ усилСниС Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
    ΠŸΡ€ΠΈ запускС Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ admin, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сСрвСр Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ с ошибкой (позволяСт Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с запуском сСрвСров, ΠΏΠΎ нСдосмотру ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… доступ Π±Π΅Π· Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ). Для обращСния ΠΊ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ «/_all_dbs» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΡ€Π°Π² администратора, Π° всС Π‘Π” ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ доступными Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ admin (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ доступа ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «_security»). Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π‘Π” _users;

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ сСгмСнтированных (ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…) Π‘Π”, Π΄Π°ΡŽΡ‰ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ собствСнныС ΠΏΡ€Π°Π²ΠΈΠ»Π° распрСдСлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ сСгмСнтам (shard range). Π’ прСдставлСния ΠΈ индСксы Mango Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ для сСгмСнтированных Π‘Π”;
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ€Π΅ΠΆΠΈΠΌ автоматичСского раздСлСния ΠΏΡ€ΠΈ сСгмСнтировании (sharding). Π’ Π‘Π” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ пСрСраспрСдСлСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сСгмСнтам с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ увСличСния значСния q-Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°, примСняСмого для опрСдСлСния уровня Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° подсистСма ken для автоматичСского Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ индСксирования ΠΈ поддСрТания Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Ρ… индСксов (JavaScript, Mango, индСксы для поиска тСкста) Π±Π΅Π· явного запуска ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΡ… построСния;
  • ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСписан процСсс smoosh, примСняСмый для автоматичСской ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π‘Π”;
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° новая подсистСма IO Queue, примСняСмая для измСнСния ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ;
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° систСма рСгрСссивного тСстирования;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ arm64v8 (aarch64) ΠΈ ppc64le (ppc64el);
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° связывания с JavaScript-Π΄Π²ΠΈΠΆΠΊΠΎΠΌ SpiderMonkey 1.8.5 (ESR-Π²Π΅Ρ‚ΠΊΠ° Firefox 60) с ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ES5, ES6 ΠΈ ES2016+;
  • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ поисковый Π΄Π²ΠΈΠΆΠΎΠΊ Dreyfus Π½Π° основС Lucene, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ поисковой систСмы Π½Π° Π±Π°Π·Π΅ CouchDB;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ бэкСнд для вСдСния Π»ΠΎΠ³ΠΎΠ² с использованиСм systemd-journald;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° настройка «[couchdb] single_node» ΠΏΡ€ΠΈ установкС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ CouchDB автоматичСски создаст систСмныС Π‘Π”, Ссли ΠΎΠ½ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚;
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ процСсса couch_server ;
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ установщик для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Windows;
  • Π Π°Π·ΠΌΠ΅Ρ€ прСдставлСний ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ 2^28 (268435456) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ Π»ΠΈΠΌΠΈΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ настроСн для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈ сСгмСнтированных прСдставлСний ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΉ query_limit ΠΈ partition_query_limit Π² сСкции «[query_server_config]»;
  • Π£Π΄Π°Π»Ρ‘Π½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ HTTP-интСрфСйс управлСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠ·Π»ΠΎΠΌ, запускаСмый Π½Π° сСтСвом ΠΏΠΎΡ€Ρ‚Ρƒ 5986, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступна Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс управлСния кластСром;
  • ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° сокращён Π΄ΠΎ 8 ΠœΠ‘, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… со старых сСрвСров послС обновлСния Π΄ΠΎ CouchDB 3.0. Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠΌΠΈΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ настройку «[couchdb] max_document_size»;
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° большая чистка ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… возмоТностСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρ‹ _replicator ΠΈ _external, поля disk_size ΠΈ data_size, опция delayed_commits;
  • Для запуска CouchDB Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ трСбуСтся Erlang/OTP 20.3.8.11+, 21.2.3+ ΠΈΠ»ΠΈ 22.0.5. ВСорСтичСски сохранСна Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ с Π²Π΅Ρ‚ΠΊΠΎΠΉ Erlang/OTP 19, Π½ΠΎ ΠΎΠ½Π° ΠΎΡ…Π²Π°Ρ‡Π΅Π½Π° тСстами.

Напомним, Ρ‡Ρ‚ΠΎ CouchDB Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ упорядочСнного списка ΠΈ позволяСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими Π‘Π” Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ «ΠΌΠ°ΡΡ‚Π΅Ρ€-мастСр» с ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹Ρ… ситуаций. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвСр Ρ…Ρ€Π°Π½ΠΈΡ‚ свой Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, синхронизированный с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ сСрвСрами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² offline-Ρ€Π΅ΠΆΠΈΠΌ ΠΈ пСриодичСски Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния. Π’ частности, данная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ CouchDB ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ синхронизации настроСк ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ. РСшСния Π½Π° Π±Π°Π·Π΅ CouchDB Π²Π½Π΅Π΄Ρ€Π΅Π½Ρ‹ Π² Ρ‚Π°ΠΊΠΈΡ… компаниях ΠΊΠ°ΠΊ BBC, Apple ΠΈ CERN.

Запросы ΠΊ CouchDB ΠΈ индСксация Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² соотвСтствии с ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠΎΠΉ MapReduce, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для формирования Π»ΠΎΠ³ΠΈΠΊΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… язык JavaScript. Π―Π΄Ρ€ΠΎ систСмы написано Π½Π° языкС Erlang, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ для создания ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… мноТСство ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… запросов распрСдСлСнных систСм. View-сСрвСр написан Π½Π° языкС Π‘ΠΈ ΠΈ базируСтся Π½Π° JavaScript-Π΄Π²ΠΈΠΆΠΊΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Mozilla. Доступ ΠΊ Π‘Π” производится ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP с использованиСм RESTful JSON API, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² Ρ‚ΠΎΠΌ числС ΠΈΠ· выполняСмых Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’ качСствС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ хранСния Π΄Π°Π½Π½Ρ‹Ρ… выступаСт Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ содСрТащий ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ псСвдо-структурированного Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (агрСгирования ΠΈ формирования Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ) примСняСтся концСпция формирования прСдставлСний (view), для опрСдСлСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ язык JavaScript. На JavaScript Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ прСдставлСния.

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