172 похожих чатов

Привет. Есть ли в Postgres тип данных Array/List такой, что

позволял бы хранить пару млрд чисел, вставлять в середину за число операций свойственное B+-tree логарифма (т.е. этот адский Array/list бы мог лежать не в одном Tuple, а в каком угодно числе Leaf-блоков B+-tree), возвращать элемент по индексу, удалять из начала, середины, конца, по индексу, пушить в конец?

26 ответов

14 просмотров

https://www.postgresql.org/message-id/4799.1214857781%40sss.pgh.pa.us

Нет. Но, вообще, основой моделирования в реляционных СУБД являются отношения (таблицы) — почему бы не использовать их? ;)

pavel- Автор вопроса
Yaroslav Schekin
Нет. Но, вообще, основой моделирования в реляционн...

Да просто было теоретически интересно. После того, как видел в одной nosql-хранилке возможность положить не только key=value а ещё и key=[list] с описанными свойствами листа.

Есть. Называется "таблица с первичным ключом".

pavel- Автор вопроса
Ilya Anfimov
Есть. Называется "таблица с первичным ключом".

Хочу миллиарды списков длиной 0...многомлн элементов. Это надо будет много много таблиц фигачить.

pavel
Хочу миллиарды списков длиной 0...многомлн элемент...

Одну. Правда, миллиард списков средней длиной сто тысяч хотя бы элементов -- будет занимать большэ петабайта. Боюсь, ... У вас в любом случае с этим будут некоторые проблемы.

pavel
Хочу миллиарды списков длиной 0...многомлн элемент...

И да, покупка лицэнзий оракла среди этих проблем будет самой небольшой.

pavel- Автор вопроса
Ilya Anfimov
Одну. Правда, миллиард списков средней длиной сто ...

Это не делается табличкой вообще. Например вставка в середину списка длиной лям элементов. Я хочу при этом доставать элементы по индексу. Ну или я тупой чтобы придумать такой create table. Еще раз задача: списки имеют имена или 64-битные произвольные айдишники. По id списка и index я достаю элемент. Я могу вставлять в середину списка. После такой вставки, все индексы элементов после середины ползут вверх на +1.

pavel
Это не делается табличкой вообще. Например вставка...

Если у вас там реально петабайты данных -- наймите программиста толкового, право слово.

pavel
Это не делается табличкой вообще. Например вставка...

Там есть нюансы, но в общем -- умеренной сложности структура.

pavel- Автор вопроса
pavel
Так как это делается табличкой?

Фактически -- делаете аналог toast руками, с отдельными пересчётами ключевых граничных позицый.

pavel- Автор вопроса
pavel
А для тупых дайте тынц на "toast"?

https://www.postgresql.org/docs/14/storage-toast.html

pavel- Автор вопроса
pavel
А для тупых дайте тынц на "toast"?

1) нанимается программист с db уклоном 2)выбирается релевантная субд, не уверен что сточные бд здесь оптимальны, например.... ну или уменьшаются аппетиты.... постгря 9-ая с объёмом в районе 2Тб уже требовала тонкой настройки структуры бд и продумывания всех запросов....

pavel- Автор вопроса
Ale><ander
1) нанимается программист с db уклоном 2)выбираетс...

Проблемы "решить задачу" нет, интерес академический.

pavel
Проблемы "решить задачу" нет, интерес академически...

А раз "академический" — какая структура данных даст вот это, в принципе: > списки имеют имена или 64-битные произвольные айдишники. По id списка и index я достаю элемент. Я могу вставлять в середину списка. Это O(log(N)) на вставку/поиск/удаление в худшем случае, так? Причём с требованием: > После такой вставки, все индексы элементов после середины ползут вверх на +1. Я правильно понял?

pavel- Автор вопроса
Yaroslav Schekin
А раз "академический" — какая структура данных дас...

Верно. ЗНаю реализацию такого на B+-tree например.

pavel
Верно. ЗНаю реализацию такого на B+-tree например.

Хмм... если последнее работает не за O(n), и ключи именно такие — то в чём трюк?

Yaroslav Schekin
Хмм... если последнее работает не за O(n), и ключи...

В обновлении всех страниц по пути к корню, включая корневую. Формально -- операцыя такой жэ сложности, как и прямой поиск.

Ilya Anfimov
В обновлении всех страниц по пути к корню, включая...

Не вижу, как это может работать. Индексы каким образом меняются? Вот исходное требование: "Я могу вставлять в середину списка. После такой вставки, все индексы элементов после середины ползут вверх на +1."

Yaroslav Schekin
Не вижу, как это может работать. Индексы каким обр...

В данных хранятся не индэксы как таковые, а размеры кусков. Потому для поиска -- идёт поиск BTree, в процэссе суммируются размеры. При обновлении -- меняются все страницы от изменившэйся до корневой.

Ilya Anfimov
В данных хранятся не индэксы как таковые, а размер...

Для [абстракции] массива это сработает, да. По "удалять из начала, середины, конца" я подумал, что индексы тоже могут удаляться (быть пропущены).

Yaroslav Schekin
Для [абстракции] массива это сработает, да. По "уд...

Ну, при жэлании можно и элемент "пропуск индэкса" добавить -- или дажэ просто поставить нужный размер.

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта