1. Як працює база даних NoSQL
Бази даних NoSQL використовують різноманітні моделі даних для доступу до даних та управління ними. Бази даних таких типів оптимізовані для застосунків, які працюють з великим обсягом даних, потребують низької затримки та гнучких моделей даних. Усе це досягається шляхом пом'якшення жорстких вимог до несуперечності даних, притаманних інших типів БД.
Розглянемо приклад моделювання схеми для простої бази даних книг.
У реляційній базі даних запис про книгу часто поділяється на кілька частин (або «нормалізується») і зберігається в окремих таблицях, відносини між якими визначаються обмеженнями первинних та зовнішніх ключів. У цьому прикладі в таблиці Книги є стовпці ISBN, Назва книги та Номер видання>, у таблиці «Автори» — стовпці «ІД автора» та «Ім'я автора», а в таблиці «Автор–ISBN » – стовпці «Автор» та «ISBN». Реляційна модель створена таким чином, щоб забезпечити цілісність даних посилань між таблицями в базі даних. Дані нормалізовані для зниження надмірності та в цілому оптимізовані для зберігання.
У базі даних NoSQL запис про книгу зазвичай зберігається як документ JSON. Для кожної книги або елемента значення «ISBN», «Назва книги», «Номер видання», «Ім'я автора» та «ІД автора» зберігаються як атрибути в єдиному документі. У такій моделі дані оптимізовані для інтуїтивно зрозумілої розробки та горизонтальної масштабованості.
2/ Для чого можна використовувати бази даних NoSQL?
Бази даних NoSQL добре підходять для багатьох сучасних застосунків, наприклад мобільних, ігрових, інтернет-застосунків, коли потрібні гнучкі масштабовані бази даних з високою продуктивністю та широкими функціональними можливостями, здатні забезпечувати максимальну зручність використання.
Гнучкість. Як правило, бази даних NoSQL пропонують гнучкі схеми, що дозволяє здійснювати розробку швидше та забезпечує можливість поетапної реалізації. Завдяки використанню гнучких моделей даних БД NoSQL добре підходять для частково структурованих та неструктурованих даних.
Масштабованість. Бази даних NoSQL розраховані масштабування з використанням розподілених кластерів апаратного забезпечення, а не шляхом додавання дорогих надійних серверів. Деякі постачальники хмарних послуг проводять ці операції у фоновому режимі, забезпечуючи повністю керований сервіс.
Висока продуктивність. Бази даних NoSQL оптимізовані для конкретних моделей даних та шаблонів доступу, що дозволяє досягти вищої продуктивності порівняно з реляційними базами даних.
Широкі функціональні можливості. Бази даних NoSQL надають API та типи даних із широкою функціональністю, які спеціально розроблені для відповідних моделей даних.
3. Типи баз даних NoSQL
NoSQL бази даних використовуються там, де не надто зручно зберігати дані у вигляді таблиць. Тому вони зберігаються у різних форматах. Зазвичай виділяються 6 основних типів даних NoSQL-баз.
БД на основі пар «ключ-значення»
Бази даних з використанням пар «ключ-значення» підтримують високу роздільність та забезпечують безпрецедентне горизонтальне масштабування, недосяжне під час використання інших типів БД. Хорошими прикладами використання для баз даних типу «ключ-значення» є ігрові, рекламні програми та програми IoT.
Наприклад, Amazon DynamoDB забезпечує стабільну роботу БД із затримкою не більше кількох мілісекунд за будь-якого масштабу. Така стійка продуктивність спричинила основну причину перенесення Snapchat Stories у сервіс DynamoDB, оскільки ця можливість Snapchat пов'язана з найбільшим навантаженням на запис у сховище.
Документ
У коді програми дані часто представлені як об'єкт або документ у форматі, подібному до JSON, оскільки для розробників це ефективна та інтуїтивна модель даних. Документні бази даних дозволяють розробникам зберігати та робити запит на дані в БД за допомогою тієї ж документної моделі, яку вони використовують у коді програми. Гнучкий, напівструктурований, ієрархічний характер документів та документних баз даних дозволяє їм розвиватися відповідно до потреб додатків.
Документна модель добре працює в каталогах, профілях користувача та системах управління контентом, де кожен документ унікальний і змінюється з часом. Amazon DocumentDB (сумісна з MongoDB) та MongoDB — поширені документні бази даних, які надають функціональні та інтуїтивно зрозумілі API для гнучкої розробки.
Графові бази даних
Графові бази даних спрощують розробку та запуск застосункыв, що працюють з наборами складнопов'язаних даних. Типові приклади використання графових баз даних — соціальні мережі, послуги рекомендацій, системи виявлення шахрайства та графи знань. Amazon Neptune — це повністю керований сервіс графових баз даних. Neptune підтримує модель Property Graph і Resource Description Framework (RDF), надаючи на вибір два графових API: TinkerPop та RDF/SPARQL. До поширених графових БД ставляться Neo4j і Giraph.
БД у пам'яті
Часто в ігрових та рекламних застосунках використовуються таблиці лідерів, зберігання сесій та аналітика в реальному часі. Такі можливості вимагають відгуку в межах кількох мікросекунд, при цьому різке зростання трафіку можливе будь-якої миті.
Amazon MemoryDB для Redis — це сумісний з Redis надійний сервіс бази даних у пам'яті, який зменшує затримку читання до мілісекунд та забезпечує надійність у кількох зонах доступності. MemoryDB спеціально створена для забезпечення надвисокої продуктивності та надійності, тому її можна використовувати як основну базу даних для сучасних програм на базі мікросервісів.
Amazon ElastiCache — це повністю керований сервіс кешування в пам'яті, сумісний з Redis та Memcached для обслуговування робочих навантажень із низькою затримкою та високою пропускною здатністю. Такі клієнти, як Tinder, яким потрібно, щоб їхні програми давали відгук у режимі реального часу, користуються системами зберігання даних у пам'яті, а не на диску. Ще одним прикладом спеціально розробленого сховища даних є Amazon DynamoDB Accelerator (DAX). DAX дозволяє DynamoDB зчитувати дані у кілька разів швидше.
Пошукові БД
Багато програм формують журнали, щоб розробникам було простіше виявляти та усувати неполадки. Сервіс Amazon OpenSearch — спеціально розроблений сервіс для візуалізації та аналітики потоків даних, що автоматично генеруються в режимі, близькому до реального часу, шляхом індексування, агрегації частково структурованих журналів і метрик та пошуку за ними.
До того ж, сервіс Amazon OpenSearch — це потужний, високопродуктивний сервіс для повнотекстового пошуку. Компанія Expedia використовує понад 150 доменів сервісу Amazon OpenSearch, 30 ТБ даних та 30 мільярдів документів для різноманітних особливо важливих прикладів використання — від операційного моніторингу та усунення несправностей до відстеження стека розподілених додатків та оптимізації витрат.
4. Порівняння баз даних SQL (реляційних) і NoSQL (нереляційних)
NoSQL має багато переваг, тому ти маєш хоча б теоретично знати, що вже існує потрібний інструмент, перш ніж писати його самостійно. Нижче я наведу порівняння NoSQL і SQL баз даних:
Підходящі робочі навантаження
Реляційні БД призначені для транзакційних та строго несуперечливих додатків обробки транзакцій у режимі реального часу (OLTP) та добре підходять для аналітичної обробки в режимі реального часу (OLAP).
Бази даних NoSQL призначені для роботи з низкою шаблонів доступу до даних, у тому числі програм з низькою затримкою. Пошукові бази даних NoSQL призначені для аналітики частково структурованих даних.
Модель даних
Реляційна модель нормалізує дані та перетворює їх на таблиці, що складаються з рядків і стовпців. Схема жорстко визначає таблиці, рядки, стовпці, індекси, відносини між таблицями та інші елементи бази даних. Така БД забезпечує цілісність даних посилань у відносинах між таблицями.
Бази даних NoSQL надають різноманітні моделі даних, такі як пари «ключ-значення», документи та графи, оптимізовані для високої продуктивності та масштабованості.
Властивості ACID
Реляційні бази даних забезпечують набір властивостей ACID: атомарність, несуперечність, ізольованість, надійність.- Атомарність вимагає, щоб транзакція виконувалася повністю або взагалі не виконувалася.
- Несуперечність означає, що одразу після завершення транзакції дані повинні відповідати схемі бази даних.
- Ізольованість вимагає, щоб паралельні транзакції виконувались окремо одна від одної.
- Надійність передбачає здатність відновлюватися до останнього збереженого стану після непередбаченого збою в системі або перебою в подачі живлення.
Бази даних NoSQL найчастіше пропонують компроміс, пом'якшуючи жорсткі вимоги властивостей ACID заради більш гнучкої моделі даних, яка допускає горизонтальне масштабування. Завдяки цьому БД NoSQL — відмінний вибір для прикладів використання з високою пропускною здатністю та низькою затримкою, в яких потрібне горизонтальне масштабування, не обмежене рамками одного інстансу.
Продуктивність
Продуктивність в основному залежить від дискової підсистеми. Для забезпечення максимальної продуктивності часто потрібна оптимізація запитів, індексів та структури таблиці.
Продуктивність зазвичай залежить від розміру кластера базового апаратного забезпечення, затримки мережі та застосунку, що викликає.
Масштабування
Реляційні бази даних зазвичай масштабуються шляхом збільшення обчислювальних можливостей апаратного забезпечення або додавання окремих копій для робочих навантажень читання.
Бази даних NoSQL зазвичай підтримують високу роздільність завдяки шаблонам доступу з можливістю масштабування на основі розподіленої архітектури. Це підвищує пропускну здатність та забезпечує стійку продуктивність майже в необмежених масштабах.
API
Запити на запис та вилучення даних складаються на мові SQL. Ці запити аналізує та виконує реляційна база даних.
Об'єктно-орієнтовані API дозволяють розробникам застосунків легко здійснювати запис та вилучення структур даних. Завдяки використанню ключів секцій Програми можуть вести пошук за парами «ключ-значення», наборами стовпців або частково структурованими документами, що містять серійні об'єкти та атрибути застосунків.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ