Databases Flashcards

1
Q

Когда лучше document reference в MongoDB?

A

Когда мы видим, что данные будут дублироваться, например разные книги пишет один автор, тогда будут проблемы с консистентностью и тут явно нужно указывать ref.

Если у нас есть много комментариев, которые хранятся в документе поста, то добавление нового, будет перезаписывать весь документ, что будет замедлять запрос.

Если у нас связанные данные, к примеру, комментарии к посту, будут запрашиваться отдельно, например, лучшие комментарии дня. Или все комментарии одного пользователя, тоже намного удобнее использовать ref.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Когда лучше embedded documents в MongoDB?

A

Если у нас связь 1 к 1, например, мы храним паспортные данные или адрес.

Также, если мы храним данные, которые привязаны к одному документы и не будут запрашиваться неразрывно от него. Например, если мое резюме загнать в MongoDB, то, где я учился и работал лучше будет хранить в документе резюме, а не отдельно.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Репликация БД

A

Репликация - поднимается несколько копий. При интенсивном чтении, нагрузка на сервера меньше.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Шардинг БД

A

Шардинг - это разбиение данных на более мелкие куски. В итоге, можно поднимать дополнительные машины и скейлиться горизонтально.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

DB normalization

A

Нормалізація — це процес побудови структури даних і залежностей, при якому усувається надмірність і несумісні залежності.

1 НФ — відсутня надмірність, окрема таблиця для кожного пов’язаного набору даних, є первинний ключ.

2 НФ — окремі таблиці для даних у кількох записах, пов’язані вторинним ключем.

3 НФ — поля, що не залежать від ключа, виносяться в окрему таблицю (університет можна зберігати в користувачі, але можна і окремо).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

DB integrity

A

Соблюдение точности и консистентности данных. Дата или номер телефона в правильном формате.Потеря связанной записи (книга без автора).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Consistency in DB

A

Консистентність БД — це стан бази, коли всі дані валідні, без суперечностей і “відірваних” зв’язків, що відповідає заданим правилам і обмеженням.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

NoSQL vs SQL

A

SQL - in cases where structure is well defined and stable. Data consistency is important. (Orders, banking.)

NoSQL - in cases where structure evolve rapidly. (Social networks, data analysis)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

ACID

A

Описывает транзакционную систему, при которой база будет надежно работать даже в случае ошибок.

Atomicity - операция или выполнилась или нет.

Consistency - после транзакции база перейдет с одного валидного состояния в другое.

Isolation - операции не влияют друг на друга.

Durability -данные после успешно завершенной транзакции, будут успешно сохранены даже в случае перебоя в питании

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Розподілені транзакції

A

У випадку мікросервісів для розподілених транзакцій можна використовувати такі патерни:

Двофазний коміт (Two-phase commit)

Складається з фази підготовки і фази коміту. Потрібен координатор, який спочатку створює глобальну транзакцію, потім обходить сервіси та каже їм підготуватися і створити транзакцію. Коли всі готові, він дає команду виконати зміни і закомітити їх. Якщо виконання переривається, координатор обходить сервіси та скасовує транзакції, дані відкатуються.

Такий синхронний підхід може займати надто багато часу.

Сага (Saga)

Сага є асинхронним патерном. Сервіси взаємодіють між собою за допомогою подій (івентів). Якщо все йде добре, відправляється подія для подальшої обробки. Якщо виникає помилка, надсилається подія з позначкою про помилку, яка вказує на необхідність відкоту. Може також бути присутній єдиний процесор, який координує події та викликає відповідні ендпоїнти.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Active record vs Data mapper

A

Active record - объект с данными позволяет нам сохранять и обновлять данные в базе через свой же интерфейс.

Data mapper - объект с данными ничего не знает о БД. Есть отдельная прослойка позволяющая создавать и обновлять данные. Это дает нам возможность разделять бизнес логику и слой базы данных.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

CAP теорема

A

Consistency, Availability, Partition Tolerance. Стверджує, що в розподіленій БД можна забезпечити лише 2 з цих властивостей.

Consistency – всі вузли бачать однакові дані одночасно, забезпечуючи актуальність, але потребуючи синхронізації, що може знижувати доступність.

Availability – кожен запит отримує відповідь, навіть якщо частина системи недоступна, але це може призвести до застарілих даних.

Partition Tolerance – система може обробляти данні, навіть при проблемах зі зв’язком між вузлами, що є критичним для стабільності розподілених систем.

Комбінації в CAP теоремі:

CP (Consistency + Partition Tolerance): Система забезпечує узгодженість і стійкість до розділення, але може тимчасово бути недоступною. Пріорітет на консистентність. Приклад: HBase, MongoDB.

AP (Availability + Partition Tolerance): Система забезпечує доступність і стійкість до розділення, але можливі різні версії даних на вузлах. Приклад: Cassandra, CouchDB.

CA (Consistency + Availability): Забезпечує узгодженість і доступність, але не витримує розділення. Реалізується в однонодових або повністю з’єднаних системах, як реляційні бази даних.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Які є типи join в SQL?

A

Inner join - повертаються рядки в обох таблицях.
Left join - всі рядки в лівій таблиці, якщо немає в правій, буде null.
Right join - всі рядки в правій таблиці, якщо немає в лівій, буде null.
Outer join - повертає всі рядки з обох таблиць. Якщо рядок відсутній в одній таблиці, його значення заповнюються NULL.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

DB Connection Pool

A

База має певний розмір пулу в залежності від налаштувань.
Робиться запит, береться конекшн з пулу. Якщо немає вільних, запит очікує.
Після виконання конекшн вивільняється.
Якщо навантаження низьке, частина конекшенів закривається.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly