Azure Cosmos DB става без сървър

Космос DB на Azure е една от основите на платформата, захранваща много от ключовите й услуги. Проектиран от нулата като разпределена база данни, той изпълнява набор от различни модели на последователност, позволяващи ви да се компрометирате между производителността и латентността на вашите приложения. След това има различни модели за работа с данни, от познатите приложни програмни интерфейси (API) на NoSQL и SQL, до поддръжката на API на Mongo DB до двигателя за заявки към базата данни на графика на Gremlin.

В Cosmos DB има достатъчно, за да поддържа най-често срещаните сценарии за разработка в облака, като ви предоставя последователна платформа за данни, която може да споделя данни в глобален мащаб. Microsoft често го описва като „база данни с планетарен мащаб“, подходящо описание.

Безсървърната алтернатива на предоставената пропускателна способност

Въпреки всички предимства, Cosmos DB има някои недостатъци; не на последно място цената му. Въпреки че има относително ограничена безплатна опция, стартирането й в мащаб може да бъде скъпо и трябва да вземете това предвид при изграждането на приложения около нея. Бюджетирането на единиците за заявки на Cosmos DB е сложен процес, който трудно може да се получи от първия път, особено когато вземете предвид мащабирането, ръчно или автоматично.

Microsoft за известно време пусна визуализация на безсървърна опция за Cosmos DB, базирана на основния си SQL API. Това е интересна алтернатива на традиционно предоставената опция. Той ви таксува само когато изпълнява заявка и спира вашия екземпляр, когато нищо не се случва. Ще има допълнителна латентност в операциите с база данни, тъй като вашият екземпляр трябва да се върти, когато е спрян. Разбира се, има такса за съхранение, но това е същото с всяка база данни на Azure. Първоначалният пробен период вече е разширен до всички API на Cosmos DB, като общата наличност не е твърде далеч в бъдеще.

Добавянето на безсървърна опция към Cosmos DB има много смисъл за много видове натоварвания, при които получавате заявки в малък брой и на партиди. За малко работно натоварване с нередовен модел на работа, модел на ценообразуване въз основа на потреблението има много смисъл - и може да спести значителна сума пари в дългосрочен план, тъй като няма ангажимент за осигурена производителност.

Разходите са ниски: Плащате $ 0,282 на безсървърна единица за заявка, за около милион ЖП в фактурен цикъл. Ако имате нужда от по-надежден сървър, можете да настроите зона за наличност, но това увеличава разходите с 1,25 пъти. Това все още е разумна сделка и това, което губите в предсказуемостта, печелите с по-ниски разходи. Разходите за съхранение остават едни и същи както за ръчно, така и за автоматично предоставено количество производителност.

Първи стъпки с безсървърната Cosmos DB

Скачането е достатъчно лесно. Подобно на стандартния акаунт в Cosmos DB, ще трябва да го предоставите на абонамент и да добавите безсървърния си екземпляр към група ресурси. След това изберете API, който планирате да използвате за заявки, и когато бъдете помолени да изберете режим на капацитет, изберете безсървърна, а не предоставена пропускателна способност. Накрая го свържете с регион, като си спомните, че можете да използвате без сървъри само в един регион на Azure; няма опция за гео-излишък. Няма да можете да го използвате и с безплатния слой.

След като вашият безсървърен екземпляр се изпълни, можете да използвате неговите API за зареждане на данни и отправяне на заявки. Подобно на стандартния екземпляр на Cosmos DB, можете да изграждате JavaScript функции и тригери, които се изпълняват в базата данни, както и да използвате много различни негови API за управление на заявки.

Безсървърната Cosmos DB скоро трябва да се премести от визуализацията и добавя поддръжка за всички свои API, дори за скорошния API на Cassandra. Тъй като това е публичен предварителен преглед, можете да го настроите и да изследвате работата му направо от портала Azure. Докато е във визуализация, няма поддръжка за ARM или друга инфраструктура като инструменти за разполагане на код, но трябва да има, след като услугата е общодостъпна. Не можете да автоматизирате конфигурирането и внедряването, така че засега няма да можете да го използвате като част от CI / CD (непрекъсната интеграция / непрекъсната доставка), тъй като разполаганията ще трябва да бъдат ръчни.

Изграждащ код с безсървърна Cosmos DB

Едно място, на което трябва да получите голяма стойност от безсървърната Cosmos DB, е паралелно с Azure Functions. Двете безсървърни среди работят добре заедно и са идеални за бързи приложения с малък обем, управлявани от събития. Безсървърната Cosmos DB може бързо да увеличи от нула до 5000 единици за заявка в секунда, така че ако пишете код, който използва Функции за проследяване на грешки или други сигнали, това е опция за бързо събиране и съхраняване на данни.

Microsoft препоръчва да го използвате като част от среда за разработка, където събирате данни за заявките, от които се нуждае вашето пълномащабно приложение. Тъй като осигуряването на единици за заявки е нещо като черно изкуство, безсървърното изпълнение, изпълняващо се с целия ви код в базата данни, е полезен инструмент за разработка. Можете да настроите оперативна среда, да стартирате тестовете си, да уловите броя на използваните заявки и след това да използвате тези данни за осигуряване на пропусквателна способност за производствено внедряване.

Разбиране на безсървърните ограничения

Има ограничения при използването на безсървърния акаунт в Cosmos DB. Може би най-важното е, че нямате достъп до мултирегионни разполагания, тъй като безсървърните акаунти се изпълняват само в един регион. Това е ограничение, което има смисъл: Внедряванията на Multiregion Cosmos DB се нуждаят от множество екземпляри, изпълнявани едновременно за репликация и последователност между регионите. Ако безсървърните екземпляри се изпълняват само когато обработват заявки, няма гаранция, че друг регион ще бъде онлайн, за да се справи с репликацията. В резултат на това има промени в целта на ниво услуга Cosmos DB за безсървърни екземпляри, като се очаква записите да бъдат 30ms или по-малко и чете 10ms или по-малко.

Другото ключово ограничение е максимум 5000 единици заявка в секунда. Отново, това би трябвало да е достатъчно за повечето прости или внедрения за разработка, но изисква да следите вашите приложения и да сте готови да преминете към предоставен екземпляр на Cosmos DB, ако редовно надхвърляте вашите ограничения. В същото време всеки контейнер без сървър може да съхранява само 50 GB данни и индекси. Microsoft предоставя инструменти в портала Azure за подпомагане на мониторинга на операциите, както и в Azure Monitor.

Добавянето на опция без сървър към Cosmos DB отговаря на много въпроси относно цената. За сценарии с ниска употреба, при които не се нуждаете от глобално покритие, това трябва да е вашият първи избор. Преминете към използване на предоставен екземпляр на пропускателна способност само когато сте в състояние да разберете модела на заявката на вашето приложение и можете да бюджетирате съответно.