Производительность от S3 до EC2 для получения большого количества небольших файлов.
-
03-07-2019 - |
Вопрос
У меня есть большая коллекция фрагментов данных размером 1 КБ (порядка нескольких сотен миллионов), и мне нужен способ хранения и запроса этих фрагментов данных.Блоки данных добавляются, но никогда не удаляются и не обновляются.Наш сервис развернут на платформе S3, EC2.
Я знаю, что Amazon SimpleDB существует, но мне нужно решение, независимое от платформы (например, на случай, если нам понадобится выйти из AWS).
Итак, мой вопрос: каковы плюсы и минусы этих двух вариантов хранения и извлечения фрагментов данных.Как можно сравнить производительность?
- Храните фрагменты данных в виде файлов на S3 и ПОЛУЧАЙТЕ их при необходимости.
- Храните фрагменты данных в кластере MySQL Server.
Будет ли такая большая разница в производительности?
Решение
Вам нужно предоставить доступ к этим фрагментам данных непосредственно пользователям вашего приложения?Если нет, то запросы S3 и HTTP GET являются излишними.Учитывая также, что S3 является защищенным сервисом, накладные расходы на каждый запрос GET (всего для 1 КБ данных) будут значительно большими.
Кластер серверов MySQL был бы лучшей идеей, но для работы в EC2 вам необходимо использовать Elastic Block Storage.Наконец, не исключайте SimpleDB.Возможно, это лучшее решение вашей проблемы.Тщательно проектируйте свою систему, и в будущем вы сможете легко перейти на другие системы баз данных (распределенные или реляционные).
Другие советы
Я пытался использовать S3 как своего рода «базу данных», используя крошечные XML-файлы для хранения объектов структурированных данных и полагаясь на «ключи» S3 для поиска этих объектов.
Производительность была неприемлемой даже для EC2 — задержка до S3 слишком велика.
Запуск MySQL на устройстве EBS будет на порядок быстрее даже при таком количестве записей.