|
Нужен совет в выборе формата связующих таблиц
|
|||
---|---|---|---|
#18+
Приветствую. Используется PostgreSQL 10. Есть 2 таблицы-справочника, и есть связующая их таблица формата one-to-many (не суть важно), в ней только 2 поля, в которых будут некие id, указывающие на строки в каждой из справочников. Ожидается, что справочные таблицы будут не особо большие (сотни тыс. строк, это будут списки неких устройств, и будет в т.ч. уникальный id устройства), а вот связующая таблица будет на порядок-два больше. Так же планирую использовать для неё внешние ключи (для CASCADE DELETE). Пытаюсь определится с форматом параметра, по которому будет связь. Есть два варианта: обычный bigserial или уникальный строковый id устройства. Размер последнего - порядка 12-20 байт, т.е. ожидаемый размер строки - 24-40 байт, размер связующей таблицы в этом случае для 10 млн. строк - 240-400 мб. В случае же int8 160 мб. Будет ли оправданным решение отказаться от int8 в пользу строковых уникальных id? Учитывая, что по ним будут ещё и другие связи (тоже с внешними ключами), итоговый размер базы, и что важнее, индексов может сильно вырасти. С другой стороны, текстовый первичный ключ немного упростит программную часть, т.к. пользователь работает именно с текстовыми идентификаторами строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2019, 12:26 |
|
Нужен совет в выборе формата связующих таблиц
|
|||
---|---|---|---|
#18+
Victor256, Victor256Пытаюсь определится с форматом параметра, по которому будет связь. Есть два варианта: обычный bigserial или уникальный строковый id устройства. Размер последнего - порядка 12-20 байт, т.е. ожидаемый размер строки - 24-40 байт, размер связующей таблицы в этом случае для 10 млн. строк - 240-400 мб. В случае же int8 160 мб. 1. Вам лучше в форум по проектированию БД... 2. У вас реально больше 2 ярдов устройств? IMHO smallserial или serial будет достаточно, если нет, то см. п.1, проблемы возможны если нужна "логическая" репликация, тогда разумнее использовать не уникальную строку, а тип uuid ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2019, 13:31 |
|
Нужен совет в выборе формата связующих таблиц
|
|||
---|---|---|---|
#18+
fteУ вас реально больше 2 ярдов устройств Не думаю, оставил "на отдалённое будущее", так сказать fteпроблемы возможны если нужна "логическая" репликация А что за проблемы, или где можно почитать про это? Про uuid читал противоречивые комментарии. Кажется один из разрабов писал что использование uuid4, т.е. полностью рандомных ключей приводит к фрагментации индексов. На что кто-то другой ответил что ничего подобного, пользуйтесь и не парьтесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2019, 17:33 |
|
Нужен совет в выборе формата связующих таблиц
|
|||
---|---|---|---|
#18+
Victor256, Victor256А что за проблемы, или где можно почитать про это? Ну, это уже сильно зависит от архитектуры БД, прочитайте что такое тип serial , и опять же это вопрос проектирования и лучше обсуждать в другой ветке. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2019, 12:39 |
|
|
start [/forum/topic.php?fid=53&fpage=35&tid=1994981]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 272ms |
total: | 398ms |
0 / 0 |