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

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

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

26 ответов

6 просмотров

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
Для [абстракции] массива это сработает, да. По "уд...

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

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

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

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Карта сайта