Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Нужен совет в выборе формата связующих таблиц / 4 сообщений из 4, страница 1 из 1
25.10.2019, 12:26
    #39881493
Victor256
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет в выборе формата связующих таблиц
Приветствую. Используется PostgreSQL 10.

Есть 2 таблицы-справочника, и есть связующая их таблица формата one-to-many (не суть важно), в ней только 2 поля, в которых будут некие id, указывающие на строки в каждой из справочников.

Ожидается, что справочные таблицы будут не особо большие (сотни тыс. строк, это будут списки неких устройств, и будет в т.ч. уникальный id устройства), а вот связующая таблица будет на порядок-два больше. Так же планирую использовать для неё внешние ключи (для CASCADE DELETE).

Пытаюсь определится с форматом параметра, по которому будет связь. Есть два варианта: обычный bigserial или уникальный строковый id устройства. Размер последнего - порядка 12-20 байт, т.е. ожидаемый размер строки - 24-40 байт, размер связующей таблицы в этом случае для 10 млн. строк - 240-400 мб. В случае же int8 160 мб.

Будет ли оправданным решение отказаться от int8 в пользу строковых уникальных id? Учитывая, что по ним будут ещё и другие связи (тоже с внешними ключами), итоговый размер базы, и что важнее, индексов может сильно вырасти. С другой стороны, текстовый первичный ключ немного упростит программную часть, т.к. пользователь работает именно с текстовыми идентификаторами строк.
...
Рейтинг: 0 / 0
25.10.2019, 13:31
    #39881548
fte
fte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет в выборе формата связующих таблиц
Victor256,
Victor256Пытаюсь определится с форматом параметра, по которому будет связь. Есть два варианта: обычный bigserial или уникальный строковый id устройства. Размер последнего - порядка 12-20 байт, т.е. ожидаемый размер строки - 24-40 байт, размер связующей таблицы в этом случае для 10 млн. строк - 240-400 мб. В случае же int8 160 мб.

1. Вам лучше в форум по проектированию БД...
2. У вас реально больше 2 ярдов устройств? IMHO smallserial или serial будет достаточно, если нет, то см. п.1,
проблемы возможны если нужна "логическая" репликация, тогда разумнее использовать не уникальную строку, а тип uuid
...
Рейтинг: 0 / 0
25.10.2019, 17:33
    #39881699
Victor256
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет в выборе формата связующих таблиц
fteУ вас реально больше 2 ярдов устройств
Не думаю, оставил "на отдалённое будущее", так сказать

fteпроблемы возможны если нужна "логическая" репликация
А что за проблемы, или где можно почитать про это?

Про uuid читал противоречивые комментарии. Кажется один из разрабов писал что использование uuid4, т.е. полностью рандомных ключей приводит к фрагментации индексов. На что кто-то другой ответил что ничего подобного, пользуйтесь и не парьтесь.
...
Рейтинг: 0 / 0
26.10.2019, 12:39
    #39881862
fte
fte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет в выборе формата связующих таблиц
Victor256,
Victor256А что за проблемы, или где можно почитать про это?


Ну, это уже сильно зависит от архитектуры БД, прочитайте что такое тип serial ,
и опять же это вопрос проектирования и лучше обсуждать в другой ветке.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Нужен совет в выборе формата связующих таблиц / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]