Какие базы данных используются в FAANG?
Разные компании используют разные базы данных по тем или иным причинам. Очень часто в FAANG используются базы данных, разработанные внутри компании. FAANG-компании исторически первыми начали работать с гигантскими объемами данных и большим числом пользователей. Начав использовать существующие на тот момент решения, они столкнулись с их ограничениями, а других решений на рынке не было. Поэтому они начали разрабатывать свои технологии, чтобы соответствовать требованиям решаемых задач. Также FAANG-компании часто хотят иметь возможность быстро кастомизировать код базы данных под свои задачи, поэтому использование сторонних решений не всегда подходит. Часть этих решений базируется на существующих на тот момент решениях и является просто надстройкой. Некоторые, по сути, создали новый вид баз данных и хранилищ, которых не было до этого.
Для примера я приведу, какие базы используются в Amazon и Fb. Существует много разных видов баз данных (SQL, NoSQL) и хранилищ. Поэтому я приведу самые распространенные базы, по типам баз и типичные use-case их использования.
1) Relational database (RBD/Реляционная база данных):
Amazon: AWS RDS (разработан внутри компании) - позволяет создавать и разворачивать базы в облаке. Поддерживает множество движков: MySQL, PostgreSQL, Amazon Aurora (совместима с MySQL и PostgreSQL, поэтому легко мигрировать существующие базы), Oracle, Microsoft SQL Server, MariaDB. Чаще, внутри компании используется Aurora, MySQL или PostgreSQL в качестве движка. AWS RDS же позволяет легко создавать кластеры реляционных баз данных, в том числе развернутые в разных регионах планеты, конфигурировать репликацию данных, бэкапы и многое другое.
Fb: MySQL с масштабными внутренними надстройками для партиционирования, кластеризации и т.д. Поверх сделан собственный слой кэша гигантских масштабов.
2) Data warehouse. Применяется для логирования гиганского объема данных из всех компонент для последующего анализа. Эти данные потом используются для получения разного рода метрик, анализа, а также данных для Machine Learning. Применяется для обработки больших объемов данных не в режиме реального времени, а асинхронно. Часто, при помощи ETL.
Amazon: Amazon Redshift (разработан внутри компании).
Fb: Apache Hive(разработан внутри компании). Всегда применяется в комбинации с движком Presto (разработан изначально внутри компании)
3) NoSQL. Основной use-case - key-value хранилище для большого числа данных (что дорого если использовать in-memory cache).
Amazon: Amazon DynamoDB (разработан внутри компании)
Fb: RocksDB (разработан внутри компании), ZippyDB (разработан внутри компании)
4) Blob. В основном, применяется для хранения медиа файлов (картинки, видео и аудио), а также больших выгрузок данных, как промежуточный этап ETL или для анализа.
Amazon: AWS S3 (разработан внутри компании)
Fb: Свое внутреннее хранилище.
Post #381
1.82K