Я пишу простую аналитическую систему для своей компании. У меня есть около 100 различных типов событий, которые должны собираться на десятки проектов. Нас не интересуют кросс-проектные аналитические запросы, но события имеют похожие типы по всем проектам. Я использую PostgreSQL в качестве основного хранилища для этой системы. Теперь я должен решить, какая архитектура более предпочтительна.Один большой и широкий стол или много не очень большой для статистических данных
Первая архитектура является один очень большой стол (в терминах строк подсчитывать) в проект, который содержит данные для всех типов событий. Это будет около 20 или более столбцов, многие из которых будут иметь значение NULL. Может быть, будет использоваться разделение, чтобы разбить эту таблицу по типу события, но таблица все еще будет настолько широкой.
Вторая одна архитектура является много таблиц (довольно большой с точки зрения строк считать, но не так широко) с одной таблицей для каждого типа событий.
Я собираюсь получить аналитические данные из этих таблиц, используя разные запросы на присоединение (само объединение в случае первой архитектуры). Какой из них предпочтительнее и где их ловушки?
UPD. Все события имеют около 10 общих атрибутов. А атрибуты остаются разными от одного типа событий к другому.