Робота з мільйонами SKU: оптимізація бази даних для e-commerce
Сучасні маркетплейси й великі e-commerce проєкти оперують сотнями тисяч і навіть мільйонами товарів (SKU).
Без продуманої архітектури база даних швидко перетворюється на вузьке місце: пошук і фільтри сповільнюються, імпорти товарів «висять» годинами, а користувачі йдуть до конкурентів.
У цій статті розглянемо практики проєктування баз даних для великих e-commerce та маркетплейсів.
Основні виклики при роботі з великим каталогом
-
Швидкість пошуку та фільтрації
Користувачі очікують, що сторінки завантажаться за частки секунди навіть за 10+ млн товарів. -
Часті оновлення
Ціни, залишки, статуси товарів змінюються тисячі разів на добу.
Якщо імпорт даних триває годинами, це шкодить продажам і довірі користувачів. -
Велике навантаження на піках
Наприклад, у Black Friday або під час розпродажів сайт отримує тисячі запитів на секунду. -
Аналітика та рекомендації
Необхідно швидко будувати добірки товарів, персоналізувати каталог і не гальмувати фронтенд.
Архітектурні підходи
1. Поділ баз даних за ролями
-
OLTP (MySQL, PostgreSQL) для роботи з замовленнями, кошиком і швидкими операціями.
-
OLAP / Data Warehouse (ClickHouse, BigQuery, Snowflake) для аналітики й прогнозів.
2. Денормалізація та окремі індекси
-
Для фільтрів (категорія, бренд, ціна) краще тримати ключові поля прямо в таблиці товарів.
-
Використовувати GIN / B-tree індекси та JSONB для гнучких характеристик.
3. Розподіл даних
-
Шардінг — розділення товарів за категоріями, країнами чи регіонами.
-
Це дозволяє масштабувати базу горизонтально без перевантаження однієї машини.
4. Кешування
-
Redis / Memcached для зберігання популярних сторінок та запитів.
-
Elasticsearch або OpenSearch для швидкого пошуку по каталогу.
5. Асинхронні процеси
-
Імпорт, синхронізацію цін і залишків варто виносити в черги (Kafka, RabbitMQ, Laravel Horizon).
-
Так користувачі не чекають завершення операцій у реальному часі.
Світові приклади
-
Amazon
Має понад 350 млн SKU. Застосовує власні розподілені сховища (DynamoDB, S3) та кеші для пошуку й рекомендацій у реальному часі. -
Walmart
Використовує комбінацію Hadoop, Spark і Cassandra для обробки даних і формування персоналізованих добірок товарів навіть під час пікових навантажень. -
eBay
Перейшов від монолітної MySQL-бази до шардованої архітектури та інтегрував Cassandra і Kafka для масштабування та швидкої синхронізації товарів між сервісами. -
Zalando
Для пошуку та фільтрації використовує Elasticsearch із денормалізованими даними, а для аналітики — Snowflake і внутрішні стрімінгові сервіси. -
Shopee (Південно-Східна Азія)
Масштабує каталог за допомогою мікросервісної архітектури та індексів у Redis, що дозволяє витримувати тисячі одночасних пошукових запитів.
Практичні рекомендації
-
Проектуйте структуру бази ще до старту — це в рази дешевше, ніж рефакторинг у продакшні.
-
Використовуйте індекси й оптимізуйте складні JOIN-запити.
-
Розділяйте операційні та аналітичні дані — це прискорює обидва напрямки.
-
Передбачайте автоматичне горизонтальне масштабування.
-
Використовуйте моніторинг і алерти (Grafana, Prometheus) для відстеження пікових навантажень.
Висновок
Оптимізація бази даних — один із ключових етапів побудови масштабованого e-commerce.
Саме вона визначає, наскільки швидко сайт реагує на запити користувачів і чи витримає він навантаження у моменти пікових продажів.
Якщо ви плануєте масштабувати свій маркетплейс або працювати з каталогами у мільйони товарів — почніть із правильної архітектури бази даних і підбору технологій.
У каталозі 1700+ діджитал-агентств, які готові допомогти в реалізації ваших завдань. Вибирайте та економте до 30% свого часу та бюджету! Це безкоштовно та займе менше 3-х хвилин.