Коротка відповідь
Почніть із правил, що мають зберігатися при двох одночасних запитах. Зв’язки, унікальність і атомарні зміни часто потребують relational-бази. Документи доречні за відповідних запитів і узгодженості. Контентному сайту може не знадобитися runtime-база. Виберіть відновлюване сховище з потрібними інваріантами.
Практичні кроки реалізації
1. Запишіть інваріанти до схеми
Для умовного бронювання слот має один підтверджений запис, запис належить наявному клієнту, скасування зберігає історію. Перевірте підтримку правил за паралельних запитів. Перевірка перед insert сама не запобігає гонці.
2. Перелічіть ключові читання
Опишіть пошук, joins, діапазони, порядок і tenant на реальних обсягах. JSON не усуває індекси, таблиці не гарантують швидкість. Окремо моделюйте часті читання й дорогі записи. Спершу оцініть головне сховище з індексами, потім кеш чи search engine.
3. Оцініть хостинг і відновлення
Локальний файл потребує стійкого диска й сумісної топології запису; функції — правильної стратегії підключень. Перевірте резервування, restore, регіон, міграції й ключі. Керована база не знімає відповідальність за схему, дозволи й придатність відновлених даних.
Приклад реалізації
DDL PostgreSQL вбудовано в TypeScript для явної мови прикладу. Запускайте через міграції, не запит. Унікальність слота перевіряє база для паралельних writers. Production також моделює скасування й історію; видалення рядка не замінює їх.
export const migrationSql = `
CREATE TABLE customer (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
email text NOT NULL UNIQUE
);
CREATE TABLE booking (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
customer_id bigint NOT NULL REFERENCES customer(id),
slot_id bigint NOT NULL UNIQUE,
created_at timestamptz NOT NULL DEFAULT now()
);
`;
Компроміси та альтернативи
Relational-база явно задає зв’язки й правила; документи — агрегат як одиницю власності; embedded — один стійкий сервер з відповідним навантаженням; файли — перевірений публічний контент. Markdown і JSON портфоліо підтверджують лише останнє, не бази клієнтських продуктів.
Поширені помилки
Не вибирайте сховище лише за уявним трафіком, не переносіть правила в браузер, не робіть кеш головним записом і не кладіть базу на ephemeral-диск. Наявність backup у тарифі не доводить restore: перевірте дані, зв’язки, медіа й сумісність.
Перевірка перед випуском
- Паралельні записи зберігають інваріанти.
- Запити мають обсяг і tenant scope.
- Диск і підключення відповідають базі.
- Міграції мають власника й план повернення.
- Репрезентативний backup відновлюється.
Поширені запитання
Чи JSON потребує document-бази?
Ні. PostgreSQL також має JSON і relational-правила. Вибирайте за запитами й транзакціями, не однією API-відповіддю.
Коли сайт обходиться без бази?
Коли контент належить перевіреним файлам чи іншій системі й сайт не зберігає runtime-записів. Формам може бути потрібен зовнішній стійкий receiver.
Наступний крок
Перевірте найскладніший інваріант паралельними операціями й restore. Потім реалізуйте реальні запити й міграції. Кеш чи пошук додавайте за виміряною потребою.
Первинні джерела
Пов’язані матеріали та приклади
Потрібно реалізувати це у вашому продукті?
Перегляньте відповідні приклади продуктів або поділіться контекстом розробки вебзастосунку, розширення Chrome, API чи SaaS.