Какая база данных лучше для реализации API отслеживания? SQL против NoSQL
Мне нужно реализовать решение, позволяющее обмениваться информацией в целях приема через документы JSON. Идея состоит в том, чтобы реализовать REST API, который содержит следующие операции:
- Встроенные операции для обеих сторон интеграции (настольные / облачные приложения в одной стороне и сторонние приложения в другой).
- Загрузка файла / Операции загрузки файла
- Отслеживание операций (получить и положить)
- Операции с файловыми запросами (получить доступные файлы для каждой стороны интеграции)
Основное сомнение, которое у меня есть, состоит в том, какая архитектура базы данных (SQL или NoSQL) подходит лучше в этом сценарии, учитывая следующее:
- Для поддержки требований требуется всего 8-10 таблиц (таблица основных файлов, таблица учетных записей сторонних производителей, таблица приложений сторонних производителей, учетные записи рабочих столов / облачных сред, таблица приложений настольных и облачных приложений, история отслеживания файлов, таблица аудита и разрешения для файлов).
- Потенциально можно обменять миллионы файлов (у моей компании тысячи клиентов по всему миру)
- Файлы не сохраняются вечно, после завершения интеграции (кто-то загружает файл и помечает его как загруженный), файлы остаются в хранилище в течение недели, а затем удаляются.
- Использование SAAS является обязательным (мы не хотим размещать наши собственные серверы)
Основная причина, по которой мне приходится думать при использовании базы данных No-SQL, заключается в том, что она масштабируется лучше, чем база данных SQL, и она дешевле (в базах данных SAAS SQL масштабируется только вертикально).
Однако работа с базой данных NoSQL более сложна и имеет некоторые недостатки (плохой дизайн разделов может быть очень дорогим, если приложение растет очень быстро, допускаются только объединения внутри одной таблицы / коллекции / раздела, транзакции ACID поддерживаются странными способами).