MongoDB е най-популярният избор в света на NoSQL, тъй като неговата разпределена архитектура позволява повече мащабируемост, а моделът на документни данни осигурява добра гъвкавост за разработчиците. Почти всяка година се пуска основна версия на MongoDB и 2018 г. не е изключение. MongoDB 4.0 беше пуснат през юли 2018 г., последван от някои други второстепенни версии. С MongoDB версия 4.0 вече се поддържат многодокументни транзакции и преобразувания на типове. MongoDB представи нов инструмент, наречен MongoDB Charts (бета) и добави поддръжка на конструктор на конвейер за агрегиране в MongoDB компас също през 2018 г. В тази статия ще преминем през някои вълнуващи функции на MongoDB, които бяха пуснати през 2018 г.
Многодокументни ACID транзакции
Това беше най-чаканата функция в MongoDB. Започвайки от версия 4.0, многодокументните кисели транзакции срещу набори реплики са готови за производство и се поддържат от MongoDB. Всички транзакции на MongoDB вече разширяват свойствата на ACID, което гарантира целостта на данните. Наистина е лесно да добавяте acid-transactions във всяко приложение, което се нуждае от тях, и те не засягат други операции, които не ги изискват. С поддръжка на многодокументни киселинни транзакции, всяка операция на запис, която се извършва вътре в транзакцията, няма да бъде видима извън транзакцията. Ето някои полезни команди за добавяне на многодокументни киселинни транзакции във вашето приложение.
Функция | Описание |
---|---|
Session.startTransaction() | Започнете нова транзакция |
Session.commitTransaction() | Завършва транзакцията |
Session.abortTransaction() | Прекратява транзакцията |
Ето малък пример за добавяне на транзакционни операции с помощта на Mongo shell:
akashk:PRIMARY> use mydb
akashk:PRIMARY> db.createCollection(“newColl”)
akashk:PRIMARY> session = db.getMongo().startSession()
akashk:PRIMARY> session { "id" : UUID("62525323-1cd1-4ee8-853f-b78e593b46ba") }
akashk:PRIMARY> session.startTransaction()
akashk:PRIMARY> session.getDatabase("mydb").newColl.insert({name : 'hello'})
akashk:PRIMARY> WriteResult({ "nInserted" : 1 })
akashk:PRIMARY> session.commitTransaction()
Всички транзакции осигуряват последователен преглед на данните в една или много колекции в базата данни, използвайки изолация на моментни снимки. MongoDB няма да изтласка никакви необвързани промени към вторични възли/реплика. След като транзакцията бъде ангажирана, всички промени ще бъдат приложени към вторичните възли.
Има много примери, където можем да използваме MongoDB многодокументни киселинни транзакции като,
- Превод на средства между банкови сметки
- Система за плащане
- Система за търговия
- Система на веригата за доставки
- Система за таксуване
Неща, които трябва да имате предвид при добавяне на транзакции
- MongoDB ще прекрати всяка транзакция, която се изпълнява за повече от 60 секунди.
- Не трябва да се променят повече от 1000 документа в една транзакция. Няма ограничение за операции за четене.
- Всяка транзакция трябва да е с размер по-малък от 16MB, тъй като MongoDb съхранява всяка транзакция като един запис в oplog.
- Когато прекратите транзакция, всички промени ще бъдат върнати обратно.
Оператори за преобразуване на нов тип в конвейера за агрегиране
За да получат представа в реално време за данните и да пишат сложни заявки, разработчиците на MongoDB обикновено предпочитат да създават конвейер за агрегация. Във версията на MongoDB 4.0 са добавени някои нови оператори за преобразуване на тип агрегиране за заявка на данни без почистване на отделни полета.
Оператор за агрегиране | Описание |
---|---|
$convert | Преобразува стойността в определен тип |
$toDate | Преобразува стойността в дата |
$toDecimal | Преобразува стойността в десетична |
$toDouble | Преобразува стойността в Double |
$toLong | Преобразува стойността в дълга |
$toInt | Преобразува стойността в цяло число |
$toObjectId | Преобразува стойността в ObjectId |
$toString | Преобразува стойността в низ |
$ltrim | Премахнете ненужните знаци от началото на низа |
$rtrim | Отстранете ненужните знаци от края на низа |
$trim | Отстранете ненужните знаци от двете страни на низа |
Разширена функционалност на потоците от промени
Във версия 3.6 беше въведена функционалност на потоците от промени, която осигурява актуализации на промените в данните в реално време без сложни настройки. С версия 4.0 потоците от промени могат да проследяват промените в цялата база данни или клъстер вместо само в една колекция сега. Освен това, сега потоците за промяна връщат и времева марка на клъстер, свързана със събитие, което може да бъде полезно за сървърните приложения.
По-бързи миграции на данни
Когато вашата база данни е разделена в клъстера, добавянето и премахването на възли еластично от разделен клъстер може да отнеме време в някои моменти. Балансьорът за разчленени клъстери, който е отговорен за разпространението на данни във всички шардове, получи голяма надстройка във версия 4.0. Сега може да завърши миграцията на данни с 40% по-бърза скорост.
Неблокиращи вторични четения
Преди това MongoDB използваше за блокиране на всички вторични четения, когато записи в oplog се прилагаха към вторичните възли. Това причиняваше променлива латентност на вторичните четения. От MongoDB 4.0 вторичните четения станаха неблокиращи поради увеличената пропускателна способност на набора от реплики и подобрените латентности при четене.
Конструктор на конвейер за агрегация в Compass
MongoDB компас е GUI инструментът за MongoDB за визуализиране и запитване на данни. Тази година MongoDB компас получи нова функция на конвейера за агрегация. Той предоставя визуален редактор на заявки за изграждане на многоетапни конвейери за агрегация. Ето го и моментна снимка:
Конструктор на заявки за агрегиране в CompassВ допълнение към тази функция, компасът има и възможността да експортира вашите заявки на произволен роден код езици по ваш избор сега.
Диаграми MongoDB
MongoDB Charts е новият инструмент, който позволява на потребителя бързо да създава визуализации в реално време на данните на MongoDB. Този инструмент е създаден за модел на данни на документ с поддръжка на обработка на типове, редукции на масиви и вложени документи. Този инструмент позволява на потребителя да създава табла за управление на диаграми и да ги споделя с други потребители. MongoDB Charts вече е напълно интегриран с MongoDB Atlas.
Други нови функции на MongoDB
- MongoDB Stitch:Безсървърна платформа за разработка на клиентски приложения, която има сигурен достъп до услугите на Mongo.
- MongoDB Kubernetes:За внедряване на MongoDB в рамките на Kubernetes клъстер.
- MongoDB Mobile:Осигурява гъвкавост и мощност на MongoDB в компактна форма, така че да може да се използва в IOT устройства.
- Облачна услуга за наблюдение на MongoDB:За да изпратите безплатно метаданни за наблюдение към облака за наблюдение на MongoDB.
Бъдещето на MongoDB
MongoDB също така планира да пусне някои нови функции със своята версия 4.2, която включва,
- По-обширен двигател WiredTiger
- Мениджър на транзакции
- Транзакции в разпределено внедряване
- Глобални четения във времето