Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как лучше организовать структуру очень большой таблицы? / 9 сообщений из 9, страница 1 из 1
04.09.2021, 11:39
    #40095245
Pitrovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше организовать структуру очень большой таблицы?
Очередной вопрос новичка.
Имеется таблица. В перспективе очень большая - несколько миллиардов строк(прирост от 7 до 20 млн в день)
Структура таблицы:

id bigserial BIGSERIAL NOT NULL,
num int NOT NULL,
phrase1 varchar(255) NOT NULL,
phrase2 varchar(255) DEFAULT NULL,
phrase3 varchar(255) DEFAULT NULL,
phrase4 varchar(125) DEFAULT NULL,

Нагрузка на таблицу - запись. Раз в неделю поиск по каждому столбцу phrase по всей таблице.

Как лучше организовать таблицу? Имеет ли смысл включить секционирование RANGE id, скажем по 50 млн записей(в Mysql секционирование вроде бы немного ускоряло инсерт на больших таблицах). содержимое фраз - по сути хэши, так что секционирование возможно только по id.
Индексы вешать на каждый столбец отдельно или один на все четыре?
Может еще что посоветуете?
...
Рейтинг: 0 / 0
04.09.2021, 13:36
    #40095255
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше организовать структуру очень большой таблицы?
Pitrovich
Нагрузка на таблицу - запись. Раз в неделю поиск по каждому столбцу phrase по всей таблице.

Pitrovich
Индексы вешать на каждый столбец отдельно или один на все четыре?

Вообще не делать индексы за отсутствием необходимости в них.

range всего лишь по 50млн строк вам даст больше проблем, чем пользы. Как будут удаляться более ненужные старые данные?
...
Рейтинг: 0 / 0
04.09.2021, 13:54
    #40095256
Pitrovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше организовать структуру очень большой таблицы?
Melkij
range всего лишь по 50млн строк вам даст больше проблем, чем пользы. Как будут удаляться более ненужные старые данные?

То есть не делать секции вообще или делать больше, по 500 млн или 1 млрд?
Данные удаляться не будут вообще. Максимальное количество возможных строк не превышает 5 млрд.

Melkij
Вообще не делать индексы за отсутствием необходимости в них.

Если вообще не делать, запрос сильно тормозным не получится? Он и с индексом-то будет не шибко быстрый, на несколько часов, вероятно.
Планируется запрос типа SELECT t1.id, t,1.num FROM table1 t1 INNER JOIN table2 t2 ON t1.phrase1 = t2.str
Во второй таблице записей порядка миллиона.
...
Рейтинг: 0 / 0
04.09.2021, 17:25
    #40095283
Guzya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше организовать структуру очень большой таблицы?
Филфактор на 100%. По идеи если будут патриции и запись будет вестись только в новую партицую, то автовакуум-у будет легче.
...
Рейтинг: 0 / 0
04.09.2021, 21:52
    #40095300
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше организовать структуру очень большой таблицы?
Pitrovich,

Для запроса раз в неделю что вы написали скорее всего индексы не нужны.
Причина в том что они занимают кучу места, работ с ними идёт через случайное чтение и они замедляют запись в таблице, суммарно будет потеря а не выйгрыш.

Партиционирование (ну где то по 100M строк) оправдано в такой ситуации будет как минимум для одной задачи - сильного ускорения pg_dump/pg_restore
да и статистика по партициям адекватнее будет.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
05.09.2021, 00:01
    #40095309
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше организовать структуру очень большой таблицы?
Pitrovich
Очередной вопрос новичка.
Имеется таблица. В перспективе очень большая - несколько миллиардов строк(прирост от 7 до 20 млн в день)
Структура таблицы:

id bigserial BIGSERIAL NOT NULL,
num int NOT NULL,
phrase1 varchar(255) NOT NULL,
phrase2 varchar(255) DEFAULT NULL,
phrase3 varchar(255) DEFAULT NULL,
phrase4 varchar(125) DEFAULT NULL,

Нагрузка на таблицу - запись. Раз в неделю поиск по каждому столбцу phrase по всей таблице.

Очень странная задача. Она тяготеет не к базам данным а к bigdata.
Я-бы накапливал в течение недели данные в таблице и в конце - сбрасывал
в файлы типа в формате Apache Orc.

Код: sql
1.
2.
3.
week-01.orc
week-02.orc
....



В каждом файле будет примерно по 20 * 7 = 140 млн строк.
Для поиска можно брать любые биг-датавские двигатели.
Hive, Presto, Amazon Athena.

Тут индексов не будет, но можно сыграть на свойствах
самих данных. Если там лежат MD5 хеши то ввести синтетическое
поле SUBSTR(phrase1,1,1) то это будет первая hex буква
которая даст равномерное распределение на 16 партишенов
для всех 140 млн строк. Для пущей скорости сравнения - добавить
фильтры Блума на все phrases.

Джойн со второй таблицей можно делать уже по факту завершения
поиска по всему хранилищу.
...
Рейтинг: 0 / 0
05.09.2021, 12:48
    #40095339
Pitrovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше организовать структуру очень большой таблицы?
mayton

Очень странная задача. Она тяготеет не к базам данным а к bigdata.
Я-бы накапливал в течение недели данные в таблице и в конце - сбрасывал
в файлы типа в формате Apache Orc.


Спасибо. Дали очень много новой и полезной информации.
С бигдата никогда не работал. Пошел читать.
...
Рейтинг: 0 / 0
05.09.2021, 13:33
    #40095345
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше организовать структуру очень большой таблицы?
Спросите у вашего провадера сразу есть такая услуга или нет. Я знаю что Google/Azure/Amazon
продает такие штуки. В 2 мышко-клика можно поднять кластер.

Если у вас - просто самодельная серверная стойка - то лучше наверное оставаться на постгресе.
...
Рейтинг: 0 / 0
05.09.2021, 18:37
    #40095366
Pitrovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше организовать структуру очень большой таблицы?
mayton,

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


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