У меня есть база данных Greenplum, в которой у меня есть 10 сегментов, отражающих 10 жестких дисков. Моя таблица разделена на основной раздел по дате и дополнительный раздел по хеш-идентификатору. Таким образом, в течение месяца будет 30 основных разделов и каждый раздел содержит 100 подразделов. И данные в подразделе загружаются на основе хеш-кода. Теперь вопрос в том, как эти разделы распределены между сегментами.
Угадай 1:
seg1(equally distributed based on pri partition : 30datepartition/10=3 date partitions)
date1---0-99 sub partition of hashid
date2---0-99 sub partition of hashid
date3---0-99 sub partition of hashid
seg2(equally contains 30/10=3 date partitions)
date4---0-99 partition of hashid
date5---0-99 partition of hashid
date6---0-99 partition of hashid
...
..
seg10
date27---0-99 partition of hashid
date28---0-99 partition of hashid
date29---0-99 partition of hashid
OR
Угадай 2
seg1(distributed by 100hashid/10=10 hashid partitions)
date1---0-9 partition of hashid
date2---0-9 partition of hashid
...
date30---0-9 partition of hashid
seg2(equally contains 100hashid/10=10 hashid partitions)
date1---10-19 partition of hashid
date2---10-19 partition of hashid
...
date30---10-19 partition of hashid
Как это работает? Угадайте 1 или 2, если оба они не верны, проследите за тем, как они распределяются на уровне сегментов.
Это хороший дизайн, чтобы подразделить его на основе хеш-идентификатора. Поскольку я имею дело с 6 миллионами записей каждый день, и мне нужно хранить дату в течение года, я хотел, чтобы поиск затрагивал очень меньшую часть данных. Другими словами, основываясь на ключевом запросе, я определю диапазон хешей и буду искать в этих конкретных разделах.
Спасибо
Ganesh.R