|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
Всем привет! Подскажите, пожалуйста, рецепт для решения следующей задачи: 1. Есть несколько таблиц в которые разные сервисы пишут логи. 2. У всех таблиц есть 4 общие колонки (2 таймстэмпа, 2 варчара) 3. Остальные данные в таблицах отличаются - обычно это несколько вспомогательных полей (простенькие integer, varchar и т.д). 4. Нужно создать архитектуру, чтобы можно было удобно хранить текущие данные в одной таблице, и чтобы можно было добавлять логи новых сервисов (у которых будет похожая структура - 4 общие колонки + несколько дополнительных) 5. На PostgreSQL, объем - порядка 10 млн. записей в день. Пока думаю сделать 4 общие колонки, а пятую как длинный varchar, в котором через разделитель хранить "ключ-значение" вспомогательных полей. Но это не самое красивое решение, поэтому и задаю этот вопрос :) Уверен, что кто-то из форумчан с подобной задачей уже сталкивался и может подсказать подходящее решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 21:23 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
А в чём задача-то, собственно, состоит? "Объединить таблицы" это не задача, это решение. Кривое и, возможно, неуместное. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 21:45 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
sdkmasterВсем привет! Подскажите, пожалуйста, рецепт для решения следующей задачи: Гуглите "наследование таблиц". Давно расписаны все возможные варианты вместе с плюсами и минусами каждого. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 21:57 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovА в чём задача-то, собственно, состоит? В том, чтобы вместо нескольких таблиц иметь одну. Хотя можно и несколько, если есть другой способ хранения вспомогательных полей. Главное условие - не заводить новую таблицу на каждый новый лог, а пользоваться готовой инфраструктурой. Потому что в будущем понадобится хранить логи других сервисов. Заводить для каждого нового лога отдельную таблицу можно. Но спустя время можно получить зоопарк из разных таблиц, который трудно поддерживать. Просто сами логи отличаются лишь вспомогательными полями, которые довольно простые. Поэтому и поставлена задача - как-то это организовать, чтобы в будущем было удобно работать. И чтобы можно было добавлять новые логи с минимальными телодвижениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 22:17 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
softwarersdkmasterВсем привет! Подскажите, пожалуйста, рецепт для решения следующей задачи: Гуглите "наследование таблиц". Давно расписаны все возможные варианты вместе с плюсами и минусами каждого. Спасибо за совет, обязательно почитаю. Такой вопрос - я собирался делать partition для своей таблицы по дням, чтобы было удобнее бэкапить, удалять и избегать фрагментации. Наследование таблиц не потащит за собой просадку перформанса или сложности с partition? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 22:25 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
softwarersdkmasterВсем привет! Подскажите, пожалуйста, рецепт для решения следующей задачи: Гуглите "наследование таблиц". Давно расписаны все возможные варианты вместе с плюсами и минусами каждого. Этот вариант скорее всего не подойдет. Здесь нужно заводить отдельную таблицу на каждый новый лог. А как раз этого хочется избежать. Хочется иметь одну таблицу или может быть связку нескольких. Главное, чтобы ее не надо было менять на каждый новый лог. И чтобы программист через АПИ мог сторить логи разных сервисов в одном месте. Сами логи очень похожи друг на друга, отличаются лишь 3-4 колонками с вспомогательной информацией. Поэтому и хочется найти хорошее, более-менее универсальное решение. Тем более таблицу(-ы) буду создавать с чистого листа. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 22:39 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
sdkmasterхочется найти хорошее, более-менее универсальное решение. Уже давно найдено решение: syslog, systemd journal и тому подобное, имя им легион. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 00:17 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovsdkmasterхочется найти хорошее, более-менее универсальное решение. Уже давно найдено решение: syslog, systemd journal и тому подобное, имя им легион. И как ты будешь делать апдейт записи в этом случае? БД ведь не от нечего делать придумали. Давай забудем про слово "логи". Есть несколько таблиц, а в будущем будет больше. У всех таблиц есть 4 общие колонки. Своих полей у каждой таблицы 3-4 штуки, и это простые int и короткие varchar. Хочется все эти таблицы либо объединить в одну, либо создать архитектуру из нескольких связанных между собой таблиц. Единственное условие - не плодить новые таблицы на каждый новый сервис. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 08:31 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
Один из простых вариантов: 4 поля и БЛОБ-поле с произвольными XML-данными внутри. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 09:50 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
L_argoОдин из простых вариантов: 4 поля и БЛОБ-поле с произвольными XML-данными внутри. Привет! Спасибо за ответ, сам думал насчет этого варианта, только надо еще колонку LogType (integer) добавить, чтобы проще было селектить :) А что думаешь насчет наследования таблиц? Вроде пишут, что производительность не страдает, но может сталкивался и знаешь подводные? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 10:12 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
sdkmaster, я бы сделал тупо - четыре общих столбца, столбец типа сервиса, и дополнительные столбцы для сервисов. По дополнительным столбцам. Если есть возможность унифицировать, то хорошо. Если нет, то надо сделать столько столбцов сколько нужно. С одним блобом работать, думаю, проблематично. Вдруг понадобится делать отчёты, запросы. Как разбирать эти блобы? Опять же. Поля можно проиндексировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 10:50 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
sdkmasterХочется все эти таблицы либо объединить в одну, либо создать архитектуру из нескольких связанных между собой таблиц. Единственное условие - не плодить новые таблицы на каждый новый сервис. Тогда как насчёт "плодить новые таблицы на каждый тип сервиса"? Их не будет больше пары-тройки. Это оптимальное решение по производительности. С общей таблицей ты создашь бутылочное горлышко по DML. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 11:08 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
Всем привет еще раз! Пока решили остановиться на наследовании. Это позволит сохранить гибкость, а что самое главное - индексы :) Если хранить вспомогательные поля в БЛОБе, то мы лишимся тех возможностей, что дает БД. И как правильно замечено - зачем тогда БД. Так что придется создавать новые таблицы на каждый новый сервис :( Всем большое спасибо за ответы! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 11:23 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
А что думаешь насчет наследования таблиц? Для меня это пустой звук, придуманный душевнобольными. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 13:14 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
Всем привет )) Хоть дело и решенное.... Тоже стараюсь придерживаться линии - как можно меньше таблиц... Для доп полей можно создать таблицу применительно к примеру id, id_осн таблицы,id_номер сервиса, id номер доп поля сервиса, int,varchar +... поля данных. Реализовывал такое ... работает дешево и сердито. Плодите сколько угодно полей и сервисов. Наименование, описание и остальные характеристики полей, сервисов храните в отдельной таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2019, 15:34 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
RissДля доп полей можно создать таблицу применительно к примеру id, id_осн таблицы,id_номер сервиса, id номер доп поля сервиса, int,varchar +... поля данных. Реализовывал такое ... работает дешево и сердито. Плодите сколько угодно полей и сервисов. Наименование, описание и остальные характеристики полей, сервисов храните в отдельной таблице. эдакое подобие мини EAV... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2019, 19:19 |
|
Создать одну таблицу из существующих, есть 4 общие колонки
|
|||
---|---|---|---|
#18+
Как продолжение мысли .... К гадалке не ходи - сервисы по сути идентичны и отличаются подробностями, которые можно описать запросами, которые засунуть в вышесказанную таблицы описания и сделать один сервис .... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2019, 06:12 |
|
|
start [/forum/topic.php?fid=32&msg=39848560&tid=1539918]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 171ms |
0 / 0 |