Масштабные решения OLTP
Я ищу способ масштабирования инфраструктуры на моем рабочем месте. В настоящее время существует только одна база данных размером ~1,5 ТБ. Большинство запросов имеют тип OLTP, такие как вставка, обновление, удаление.
Я думал о том, чтобы защитить базу данных, используя что-то вроде структуры CitusDB, PostgresXL или MySQL, но я не знаю, какая именно, и является ли это хорошим решением для нас.
Это хорошее решение для такого рода запросов?
3 ответа
Citus может легко обрабатывать ~1,5 ТБ данных, а также может выполнять запросы вставки, обновления, удаления.
Для получения дополнительной информации вы можете проверить документацию: http://docs.citusdata.com/en/v5.2/performance/query_processing.html
Скорость приема данных в Citus: http://docs.citusdata.com/en/v5.2/performance/scaling_data_ingestion.html
Я вижу избыточную масштабируемость везде, поэтому позвольте мне быстро предложить не бессмысленный подход:
Что такое природный ключ шардинга? Часто это customer_id. Если клиенты более или менее изолированы (при использовании вашей системы), это будет работать нормально. Создайте базу данных для каждого клиента и автоматизируйте изменения схемы. У вас есть данные для всех клиентов? Настройте другой экземпляр базы данных, который содержит только эти данные. Сделайте два соединения с каждого сервера приложений.
Вам (также) нужна перекрестная аналитика клиентов? Запускать ночной экспорт и обрабатывать это в автономном режиме.
Может работать не для всех, но, по моему опыту, для более чем 90% бизнес-приложений.
Ох.. и ваш выбор технологии, очевидно, не имеет значения, но я бы выбрал open-source/free.
ClustrixDB регулярно обрабатывает рабочие нагрузки OLTP с высокой записью со многими ТБ данных. Он имеет архитектуру без общего доступа, является ACID и обладает встроенной отказоустойчивостью, и они были недавно приобретены MariaDB.
Недавно мы выполнили несколько тестов для измерения скорости приема Postgres-XL, и мы могли легко работать со скоростью до 9 миллионов строк / сек или 3 ТБ / час с кластером XL с 16 узлами. См. Этот пост в блоге для более подробной информации http://blog.2ndquadrant.com/load-data-postgres-xl-9m-rows-sec/