powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / В каких СУБД есть такая штука...
73 сообщений из 73, показаны все 3 страниц
В каких СУБД есть такая штука...
    #38824178
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как колонки, которые не хранят вставленные данные, но по которым можно строить индексы.

Т.е. такие колонки можно использовать в WHERE (по ним есть индекс) но нельзя использовать в SELECT (в них нет данных).
Смысл том, чтобы хранить в базе только индекс для ускорения работы и уменьшения размера базы. Это может быть полезно, например, для построения индексов для данных, хранящихся в виде BLOB-ов.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824188
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Function Based Index - в любой приличной СУБД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824191
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfТ.е. такие колонки можно использовать в WHERE ( по ним есть индекс ) но нельзя использовать в SELECT (в них нет данных ).

Стесняюсь спросить, а что тогда есть в индексе?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824212
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinа что тогда есть в индексе?
Да как обычно это водится у индексов: ключ и ссылка на запись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824217
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovpkarklinа что тогда есть в индексе?
Да как обычно это водится у индексов: ключ и ссылка на запись.

Ну в индексе обычно хранится значение самого ключа, за исключением Firebird. Или автор ищет Index organized table / Clustered Index?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824221
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovpkarklinа что тогда есть в индексе?
Да как обычно это водится у индексов: ключ и ссылка на запись.


Т.е. значение ключа. Соответственно, мы можем его использовать в SELECT.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824227
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий все правильно сказал. В оракл ещё есть вычислимые столбцыhttp://oracle-base.com/articles/11g/virtual-columns-11gr1.php
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824231
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinТ.е. значение ключа.
Которое не обязано совпадать с исходным значением из записи. Как, по-твоему, делается
регистронечувствительный поиск по индексу?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824234
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovFunction Based Index - в любой приличной СУБД.


Если я не ошибаюсь, для него нужно наличие данных, по которым собственно вычисляется индекс.
А хотелось бы, чтобы в базе хранился только индекс, достаточный для поиска записи по полю, но не само значение этого поля.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824236
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКоторое не обязано совпадать с исходным значением из записи.
Безусловно! Только это утверждение вступает в противоречие с:
scf Смысл том, чтобы хранить в базе только индекс для ускорения работы и уменьшения размера базы
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824241
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfА хотелось бы, чтобы в базе хранился только индекс, достаточный для поиска записи по полю, но не само значение этого поля.

Спрошу еще раз. Что для реализации этого функционала должно быть в индексе?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824255
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin,

От типа индекса зависит. Я тут немного плаваю в теории, но для B-деревьев исходное значение для каждой строки хранить не надо (хотя его можно восстановить из индекса).
Если речь идет об индексе на хеш-таблице - то да, исходное значение надо хранить, чтобы разрешать коллизии.
Как уже писали выше, для case-insensitive индексов индекс строится не по исходному, а по обработанному значению (например, переведенному в uppercase) и т.п.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824258
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scf(хотя его можно восстановить из индекса).
(например, переведенному в uppercase)
Ты эта... определись что ли... Переведение в upper case необратимо вообще-то...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824259
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfpkarklin,

От типа индекса зависит. Я тут немного плаваю в теории, но для B-деревьев исходное значение для каждой строки хранить не надо (хотя его можно восстановить из индекса).
Если речь идет об индексе на хеш-таблице - то да, исходное значение надо хранить, чтобы разрешать коллизии.
Как уже писали выше, для case-insensitive индексов индекс строится не по исходному, а по обработанному значению (например, переведенному в uppercase) и т.п.
Я угадал, ищется IOT/CI
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824260
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Текст на русском языке читается слева направа, сверху вниз.
Первая строчка из цитаты относится к B-tree
Вторая строчка из цитаты относится к case-insensitive индексам

Это был такой троллинг или я правда непонятно написал?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824263
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася Уткин,

Если речь об этом:
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables012.htm#ADMIN01506

То это не совсем то. IOT в оракле - это запихивание данных из строки непосредственно в индекс, чтобы при селекте не читать из двух разных мест на диске. А я хочу, чтобы исходные данные, по которым был построен индекс, не хранились вообще.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824267
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfно для B-деревьев исходное значение для каждой строки хранить не надо (хотя его можно восстановить из индекса).

Я, так думаю, это минимум Нобелевка!
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824269
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfВася Уткин,

Если речь об этом:
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables012.htm#ADMIN01506

То это не совсем то. IOT в оракле - это запихивание данных из строки непосредственно в индекс , чтобы при селекте не читать из двух разных мест на диске. А я хочу, чтобы исходные данные, по которым был построен индекс, не хранились вообще.
Можно поподробней про " запихивание данных из строки непосредственно в индекс"?

С чего вы взяли, что эти данные хранятся в индексе, а не "можно восстановить из индекса"?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824271
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin,

Если вы думаете, так поделитесь своими мыслями с народом, зачем их в себе-то держать) Почему нельзя восстановить исходные значения из B-tree, которое является префиксным деревом?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824273
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася Уткин,

Первый абзац по ссылке:
Unlike an ordinary (heap-organized) table whose data is stored as an unordered collection (heap), data for an index-organized table is stored in a B-tree index structure in a primary key sorted manner. Each leaf block in the index structure stores both the key and nonkey columns.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824275
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfА я хочу, чтобы исходные данные, по которым был построен индекс, не хранились вообще.

Опять стесняюсь спросить - модифицирование данных мы где будем производить?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824276
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfpkarklin,

Если вы думаете, так поделитесь своими мыслями с народом, зачем их в себе-то держать) Почему нельзя восстановить исходные значения из B-tree, которое является префиксным деревом?
В случае индекса по
Код: sql
1.
UPPER(SomeField)

?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824277
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче :-)
Чтобы направить дискуссию на правильный путь, попробую высказать следующее утверждение:

b-tree индекс позволяет найти строку (WHERE table.column = value) БЕЗ чтения самой строки.

Правда ли это? И если это правда, то возможно ли вообще не хранить значение колонки, по которой построен b-tree индекс? Разумеется, при условии, что мы не селектим эту колонку.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824278
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scf,

Восстановите мне, пожалуйста, исходные данные индекса, полученного перемножением двух интовых полей, в значение ключа которого 12.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824279
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinscf,

Восстановите мне, пожалуйста, исходные данные индекса, полученного перемножением двух интовых полей, в значение ключа которого 12.

О каком типе индекса идет речь? Назовите алгоритм или название базы+название типа индекса.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824282
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfО каком типе индекса идет речь? Назовите алгоритм или название базы+название типа индекса.

MS SQL Server. B-tree.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824283
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pkarklinscf,

Восстановите мне, пожалуйста, исходные данные индекса, полученного перемножением двух интовых полей, в значение ключа которого 12.
Не, они видите что говорит, что помимо того что индекс будет построен, так ещё в листьях индекса будет храниться это число 12, это помимо двух интовых полей :)
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824284
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinscfО каком типе индекса идет речь? Назовите алгоритм или название базы+название типа индекса.

MS SQL Server. B-tree.

Отлично, а при чем тут перемножение целых чисел?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824291
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfОтлично, а при чем тут перемножение целых чисел?

Приведите другой пример, такого индекса:

scfТ.е. такие колонки можно использовать в WHERE (по ним есть индекс) но нельзя использовать в SELECT (в них нет данных).
Смысл том, чтобы хранить в базе только индекс для ускорения работы и уменьшения размера базы.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824293
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovFunction Based Index - в любой приличной СУБД.В MySQL нету.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824295
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfПервая строчка из цитаты относится к B-tree
Вторая строчка из цитаты относится к case-insensitive индексам
А Вы, стало быть, утверждаете, что B-tree индексы не могут быть регистронечуствительными.
Ню-ню...

PS: А вообще, я сильно сомневаюсь, что какая нибудь СУБД позволит создать таблицу, которая
гарантированно не переживёт export-import, которую нельзя задействовать в репликации или
standby.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824402
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinscfО каком типе индекса идет речь? Назовите алгоритм или название базы+название типа индекса.

MS SQL Server. B-tree.

B+ Tree
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824440
кхм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfкак колонки, которые не хранят вставленные данные, но по которым можно строить индексы.

<>кхм, стесняюсь спьясить,
мальчик , ты дуяк ?

в общем ты хочешь index (F(x))
но так, чтобы от хранимого в индексе F(x) было затруднительно на стороне сервера, не зная способа F делать x= F -1 (Y), но при этом уметь таки поиск по x. (т.е. знать таки F) --> противоречие

которое частично снимается "алгоритимически сложным" кодированием/декодированием. но кодировать все равно должно быть возможно на стороне делающей where F(x). А вот декодиявать должно быть алгоитмически сьёжно
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824521
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scf В каких СУБД есть такая штука как колонки, которые не хранят вставленные данные, но по которым можно строить индексы.

Т.е. такие колонки можно использовать в WHERE (по ним есть индекс) но нельзя использовать в SELECT (в них нет данных).
Смысл том, чтобы хранить в базе только индекс для ускорения работы и уменьшения размера базы. Это может быть полезно, например, для построения индексов для данных, хранящихся в виде BLOB-ов.СУБД Caché (разделы "Скрытие чувствительных данных")
Я такую штуку использовал именно для индексации blob-ов (фото), для быстрого поиска похожих лиц.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38824545
host.13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть речь все-таки не про индексы без данных, а про индексы, построенные по существующим где-либо (не обязательно в данной БД) данным? Если так, то эти индексы - не индексы, а данные, по которым при желании можно еще построить индексы.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38827628
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfкак колонки, которые не хранят вставленные данные, но по которым можно строить индексы.

Т.е. такие колонки можно использовать в WHERE (по ним есть индекс) но нельзя использовать в SELECT (в них нет данных).
Смысл том, чтобы хранить в базе только индекс для ускорения работы и уменьшения размера базы. Это может быть полезно, например, для построения индексов для данных, хранящихся в виде BLOB-ов.

в Virtuoso реализованы индексы без ссылки на исходную запись . нужно это тупо для экономии места, т.е.такой индекс может использоваться только как покрывающий (запрос).

но тем не менее в Select list его можно использовать, как и в Where.

это вообще странное требование автора вопроса.

в FBI и индексах на выражения в оракл такое соблюдается, но автору все равно вроде не нравится.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38828866
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кхмв общем ты хочешь index (F(x))
но так, чтобы от хранимого в индексе F(x) было затруднительно на стороне сервера, не зная способа F делать x= F -1 (Y), но при этом уметь таки поиск по x.

Нет - человек хочет поиск по F(X). Другими словами ему нужен виртуальные столбцы {x} в которые он будет записывать значения, а в хранится будет только F({x}).

Собственно в том же Oracle делается при помощи View поверх IOT с полем F и instead of триггерах on insert,update, в которых :new.F=F({x}).
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38828895
кхм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Арсеньевкхмв общем ты хочешь index (F(x))
но так, чтобы от хранимого в индексе F(x) было затруднительно на стороне сервера, не зная способа F делать x= F -1 (Y), но при этом уметь таки поиск по x.

Нет - человек хочет поиск по F(X). Другими словами ему нужен виртуальные столбцы {x} в которые он будет записывать значения, а в хранится будет только F({x}).

Собственно в том же Oracle делается при помощи View поверх IOT с полем F и instead of триггерах on insert,update, в которых :new.F=F({x}).тот же хрен, вид сбоку

он хочет по табле с индексом F(x) искать , имея на руках x , а не F(x).
т.е. он на руках должен иметь и саму производящую ф-ю F() [но хочет иметь проблемы с восстановлением x из F]. об чем и речь.

ну там еще ф-ии бывают типа биекциями, и типа нет (кодирование с потерей данных). он кажется таки хочет без потери. А это значит, что он на руках должен иметь и производящую ф-ю, которой достаточно для восстановления обратной (хотя бы на конечном мн-ве значений), но , разве что, алгоритмически затруднено. Т.е. он, де факто, битым, но алгоритмически трудно-восстановимым словом хранит в таблице собственно и именно само "x"
ну, и т.п.

а что там делает ара-кал, и куда он пошёл -- это дело десятое. "вопрос реализации" , с чем у ларри большие успехи. в некотором смысле.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829081
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кхмтот же хрен, вид сбоку
Функцию то он знает. Поэтому можно сделать where F_field=F(X) .

В, принципе, в СУБД, в которых есть табличные функции, можно сделать выборку из табличной функции, которая будет принимать параметры и строить таблицу с результатом, спрятав вышеуказанное условие, только с теми полями, которые храняться.

Что-то типа select * from table(giv_me_table({x})) даже в where не нужно ничего указывать.

Ну или использовать СУБД с переопределяемыми на лету запросами (которые вместо одного подставляют другой).

Только вот зачем?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829620
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, никаких функций.
Идея этого вопроса в том, что для поиска по b-tree индексу чтение собственно строки данных не требуется, даже если нужная колонка не перенесена в индекс.

Контр-довод, который я смог найти: такая штука будет плохо работать с селектом по двум полям. Это обычно резолвится в выборку по первому индексу + table scan, а в моем случае получаем безальтернативно выборку по каждому индексу и их hash join, что намного затратнее.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829635
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfНет, никаких функций.
Идея этого вопроса в том, что для поиска по b-tree индексу чтение собственно строки данных не требуется, даже если нужная колонка не перенесена в индекс.

Контр-довод, который я смог найти: такая штука будет плохо работать с селектом по двум полям. Это обычно резолвится в выборку по первому индексу + table scan, а в моем случае получаем безальтернативно выборку по каждому индексу и их hash join, что намного затратнее.
Ответьте четко на 3 вопроса:
1. Что такое Index Only Scan?
2. Что содержится в B-tree индексе, перечислите?
2.a) b-tree (сам индекс)
2.b) помимо самого индекса, в листьях содержаться ещё и поля по которым он построен
2.c) в листьях rowid (ссылка на строку в таблице)
3. Что содержится в Index Organized Table?
3.a) b-tree (сам индекс)
3.b) помимо самого индекса, в листьях содержаться ещё и поля по которым он построен
3.c) в листьях остальные столбцы, исключая индекс

Если в 2 нет 2.b), то в 3 так же нет 3.b), т.к. формально эти структуры идентичны, т.е. IOT - то что вы ищете (а возможность получать поля в select просто приятный бонус, который вам не нужен).
Если в 2 нет 2.b), то Index Only Scan - это получение в select полей содержащихся исключительно в самом B-tree индексе, а не в его листьях?
Есть ли 2.b) в 2?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829645
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася Уткин,

1. как подсказал гугль:
https://wiki.postgresql.org/wiki/Index-only_scans
"Btree indexes contain what are technically redundant copies of the column data that is indexed."

Я так думаю, что 2.c
Судя по докам оракла, 3.b

Насчет того, что IOT - это то, что мне нужно.
b-tree - это дерево, проходом по которому из вершины в лист можно "собрать" значение, по которому этот индекс был построен. Судя по вышеприведенной доке постгреса, они именно это и делают.
оракловый IOT меня смущает тем, что в документации *явно* написано, что в индекс включают данные колонки, что избыточно (см. цитату в кавычках выше)
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829646
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася Уткин,

Вообще Index Only Scan - это, похоже, именно то, что я ищу. Разве что без опции "не хранить эти данные в таблице".
Есть ли аналогичная штука в оракле?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829650
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.dba-oracle.com/concepts/index_only_tables.htm
Вот интересная ссылка в тему...
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829655
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfВася Уткин,

1. как подсказал гугль:
https://wiki.postgresql.org/wiki/Index-only_scans
"Btree indexes contain what are technically redundant copies of the column data that is indexed."

Я так думаю, что 2.c
Судя по докам оракла, 3.b

Насчет того, что IOT - это то, что мне нужно.
b-tree - это дерево, проходом по которому из вершины в лист можно "собрать" значение, по которому этот индекс был построен. Судя по вышеприведенной доке постгреса, они именно это и делают.
оракловый IOT меня смущает тем, что в документации *явно* написано, что в индекс включают данные колонки, что избыточно (см. цитату в кавычках выше)
Как вы перевели эту цитату?

В оракловой документации "*явно* написано", что содержится явно копия поля , или что содержится само поле?
Если "содержится само поле", то это и означает, что "дерево, проходом по которому из вершины в лист можно "собрать" значение, по которому этот индекс был построен."
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829659
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfb-tree - это дерево, проходом по которому из вершины в лист можно "собрать"
значение, по которому этот индекс был построен.
В общем случае - нельзя. Потому что индекс строится не по значению, а по ключу.
Преобразование значения в ключ может быть, а может и не быть обратимым. Так что из индекса
можно получить ключ, но не значение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829661
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfВася Уткин,

Вообще Index Only Scan - это, похоже, именно то, что я ищу. Разве что без опции "не хранить эти данные в таблице".
Есть ли аналогичная штука в оракле?
Да, долго IOS (в виш листах лет 5 наверно висел) и no-logged tables рожали в PostgreSQL, но если бы ещё запилили и Intra Query Parallelism - стало возможным использовать PostgreSQL в ETL/DWH :)
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829664
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovscfb-tree - это дерево, проходом по которому из вершины в лист можно "собрать"
значение, по которому этот индекс был построен.
В общем случае - нельзя. Потому что индекс строится не по значению, а по ключу.
Преобразование значения в ключ может быть, а может и не быть обратимым. Так что из индекса
можно получить ключ , но не значение .

А значение ключа можно получить?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829669
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял, что под "значением" подразумевается значение колонки, а под "ключом" - преобразованное значение, по которому строится индекс и которое собственно в этом индексе ищется. Например, ключ = uppercase(значение) для case-insensitive индексов.

Но дело-то в том, что читать "значение" мне нафиг не нужно) Мне бы только rowid узнать, чтобы мирно прочитать мой блоб из тейблспейса.

Насчет IOT - я так думаю, что данные все-таки дублируются, т.е. хранятся и в индексе, и в таблице. Иначе full scan таблицы потребует чтения из двух разных мест.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829674
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfЯ так понял, что под "значением" подразумевается значение колонки, а под "ключом" - преобразованное значение, по которому строится индекс и которое собственно в этом индексе ищется. Например, ключ = uppercase(значение) для case-insensitive индексов.

Но дело-то в том, что читать "значение" мне нафиг не нужно) Мне бы только rowid узнать, чтобы мирно прочитать мой блоб из тейблспейса.

Насчет IOT - я так думаю, что данные все-таки дублируются, т.е. хранятся и в индексе, и в таблице. Иначе full scan таблицы потребует чтения из двух разных мест .
IOT - это B-tree индекс в листьях которого нет rowid, но есть все поля за исключением содержащихся в индекс, т.е. IOT это одна структура в которой все есть, какие ещё два разных места?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829676
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё раз ответьте четко на 3 вопроса:
1. Что такое Index Only Scan?
2. Что содержится в B-tree индексе, перечислите?
2.a) b-tree (сам индекс)
2.b) помимо самого индекса, в листьях содержаться ещё и поля по которым он построен
2.c) в листьях rowid (ссылка на строку в таблице)
3. Что содержится в Index Organized Table?
3.a) b-tree (сам индекс)
3.b) помимо самого индекса, в листьях содержаться ещё и поля по которым он построен
3.c) в листьях остальные столбцы, исключая индекс

В вопросах 2 и 3 можно выбрать от 0 до 3 пунктов.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829678
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfНасчет IOT - я так думаю, что данные все-таки дублируются, т.е. хранятся и в индексе, и в таблице. Иначе full scan таблицы потребует чтения из двух разных мест.
IOT строиться не по таблице, а вместо неё
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829683
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася Уткин,

а, я думал, что в IOT поля переносятся выборочно.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829685
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfдело-то в том, что читать "значение" мне нафиг не нужно) Мне бы только rowid
узнать, чтобы мирно прочитать мой блоб из тейблспейса.
А, так вот что тебе нужно... Радуйся, оно существует! Причём во множестве вариантов.
Например, "NTFS" и "ext2". Всё как ты описываешь: индекс в котором хранятся исключительно
rowid по которым и достаётся BLOB.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829687
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Прежде чем делать такие заявления, желательно понимать отличие требований для ФС к требованиям для СУБД. Вы должны это знать, так что ваш комментарий меня удивляет.
Банальнейший пример - в таблице может быть больше одно ключа (не путать с первичным ключом)
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829688
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfВася Уткин,

а, я думал, что в IOT поля переносятся выборочно.
Это называется Create Indexes with Included Columns и есть только в MS SQL
В Oracle того же эффекта можно достичь построив Materialized View.
Да собственно и в MS SQL тоже можно построив Indexed View (Но только в MS SQL Enterprise-версии оптимизатор запросов будет автоматически использовать indexed view в запросах в которых он не указан, но с его помощью их можно ускорить. А Indexes with Included Column будет использовать автоматически в любой версии).
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829692
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, ну я совершенно вас не понимаю :-)
Посты, достойные школьника, перемежаются неожиданно глубокими знаниями по мелким деталям.

Это типа такой троллинг или я правда так хреново излагаю мысли? :-)
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829696
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче)

Есть таблица из 4 полей:
X VARCHAR2
Y VARCHAR2
Z VARCHAR2
blob BLOB

Мы заранее знаем, что селектить по ней будем только блоб, а во WHERE могут упоминаться поля X, Y и Z. Как будет выглядеть наиболее эффективная реализация?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829701
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfили я правда так хреново излагаю мысли? :-)
Ага, хреново. Ты сказал "хочу по значению достать содержимое блоба". По-моему это
абсолютно конкретное требование. А потом "вдруг" всплывает "несколько ключей". Ну так
опять же радуйся: и в NTFS и в ext2 существуют штуки, обычно именуемые "links". На один и
тот же блоб могут указывать несколько ключей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829704
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfКак будет выглядеть наиболее эффективная реализация?
В зависимости от поисковых запросов или файлы в каталогах трёх уровней вложенности (для
AND) или три каталога с линками (для OR).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829707
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Давайте все-таки без клоунады...
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829732
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfДавайте все-таки без клоунады...
Я серьёзен как дохлый лев. Какому из твоих требований файловая система не удовлетворяет?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829785
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

- ACID
- администрирование
- быстродействие
- поддержка разных типов ключей
- поддержка сложных запросов (да хоть X=1 and Z=5)
- поддержка джойнов

Если все плюшки полноценный СУБД не нужны - то есть 1001 nosql СУБД, работающих быстрее.
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829835
bengunn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfКак будет выглядеть наиболее эффективная реализация?

Эффективная с какой точки зрения? с т.з. производительности? или с т.з. хранения данных?
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38829888
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38830034
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scf- ACID
Что не так с ACID? Создание линка и переименование файла атомарны, сами по себе линки
консистентны, durability тоже на месте.

scf- администрирование
Что не так с администрированием? Бэкап-рестор проблем не вызывают.

scf- быстродействие
Превосходит все известные СУБД кроме in-memory.

scf- поддержка разных типов ключей
Строковых ключей недостаточно? Для чего?

scf- поддержка сложных запросов (да хоть X=1 and Z=5)
Зачем они в системе хранения блобов?

scf- поддержка джойнов
Зачем они в системе хранения блобов? Твои гипотетические "индексы без данных" их тоже не
поддерживают, кстати.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38830076
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scfКороче)

Есть таблица из 4 полей:
X VARCHAR2
Y VARCHAR2
Z VARCHAR2
blob BLOB

Мы заранее знаем, что селектить по ней будем только блоб, а во WHERE могут упоминаться поля X, Y и Z. Как будет выглядеть наиболее эффективная реализация?
Не, с вас уже и так бутылка
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38830132
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася УткинЭто называется Create Indexes with Included Columns и есть только в MS SQL Не только, есть еще и в DB2. И есть подозрение, что в ней они появились раньше ;)
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38830143
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FavnВася УткинЭто называется Create Indexes with Included Columns и есть только в MS SQL Не только, есть еще и в DB2. И есть подозрение, что в ней они появились раньше ;)
Ок, с автора вторую бутылку вам
...
Рейтинг: 0 / 0
В каких СУБД есть такая штука...
    #38830209
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfКороче) Есть таблица из 4 полей: X VARCHAR2 Y VARCHAR2 Z VARCHAR2 blob BLOB Мы заранее знаем, что селектить по ней будем только блоб, а во WHERE могут упоминаться поля X, Y и Z. Как будет выглядеть наиболее эффективная реализация?В СУБД Caché, например, так:Class test.demo Extends %Persistent [Final] { Index idxX On X; Index idxY On Y [ Type = bitmap ]; Index idxZ On Z [ Type = bitmap ]; Property X As %String [ Calculated, Private, SqlComputeCode = {set {*}="X"_{%%ID}}, SqlComputed ]; Property Y As %String [ Calculated, Private, SqlComputeCode = {set {*}="Y"_{%%ID}_{X}}, SqlComputed ]; Property Z As %Integer [ Calculated, Private, SqlComputeCode = {set {*}=$length({blob})}, SqlComputed ]; Property blob As %Stream.GlobalBinary; ClassMethod Fill() {   &sql(truncate table test.demo)   &sql(insert into test.demo default values)   &sql(insert into test.demo(blob) values('qwer'))   &sql(insert into test.demo(blob) values('12a'))   &sql(insert into test.demo(blob) values('ZZZZXXXX'))   zwrite ^test.demoD,^test.demoI } }
  • select * from test.demoIDblob1(null)2qwer312a4ZZZZXXXX
  • select *,X,Y from test.demoIDblobXY1(null)X1Y1X12qwerX2Y2X2312aX3Y3X34ZZZZXXXXX4Y4X4
  • select *,X,Y from test.demo where Z>3IDblobXY2qwerX2Y2X24ZZZZXXXXX4Y4X4
  • select * from test.demo where Z>1 and x in ('x3','x4')IDblob312a4ZZZZXXXX
  • В данном примере значения вычисляемых полей X,Y,Z будут храниться только в индексах, но не в данных.
  • Они по-умолчанию не видны через SQL (select *), но тем не менее их (если о них, конечно, знать) можно использовать как в WHERE, так и в SELECT. В SELECT их использовать не сто́ит, так как в этом случае значение будет повторно вычислено, а не взято уже готовое из индекса. По ним можно строить разного типа индексы, включая bitmap, и строить сложные запросы, включая и JOIN. Dimitry Sibiryakovscf- поддержка сложных запросов (да хоть X=1 and Z=5) Зачем они в системе хранения блобов?ТС хранит не просто блобы, а ещё некоторую доп. информацию, полученную из них. Например, в X может храниться общее кол-во распознанных людей на фотографии, в Y - кол-во женщин, в Y - кол-во улыбающихся людей и т.д. Такого рода инфу ради экономии места и скорости выполнения запросов лучше хранить только в индексах и не вычислять каждый раз.
    ...
    Рейтинг: 0 / 0
    В каких СУБД есть такая штука...
        #38831148
    Ivan Durak
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    servitТакого рода инфу ради экономии места и скорости выполнения запросов лучше хранить только в индексах и не вычислять каждый раз.
    а как индексы перестраиваться будут? нормально?
    и да, апдейт этих полей возможен?
    ...
    Рейтинг: 0 / 0
    В каких СУБД есть такая штука...
        #38831249
    servit
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    Ivan Durakа как индексы перестраиваться будут? нормально?
    Да, без проблемClass demo.test Extends %Persistent
    {

    Index idxX On X;

    Index idxY On Y;

    Property X As %Integer [ InitialExpression = 12 ];

    Property Y As %Integer [ Calculated, SqlComputeCode = {set {*}={X}+1}, SqlComputed, SqlComputeOnChange = X ];

    ClassMethod Fill()
    {
      &sql(truncate table demo.test)
      &sql(insert into demo.test default values)
      &sql(insert into demo.test(X) select 89 union select 34)

      zwrite ^demo.testD,^demo.testI

      write !
      &sql(update demo.test set X=55 where %ID=2)

      zwrite ^demo.testD,^demo.testI
    }

    }

    Результат:

    Код: plaintext
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    USER>d ##class(demo.test).Fill()
    ^demo.testD=3
    ^demo.testD(1)=$lb("",12)
    ^demo.testD(2)=$lb("",89)
    ^demo.testD(3)=$lb("",34)
    ^demo.testI("idxX",12,1)=""
    ^demo.testI("idxX",34,3)=""
    ^demo.testI("idxX",89,2)=""
    ^demo.testI("idxY",13,1)=""
    ^demo.testI("idxY",35,3)=""
    ^demo.testI("idxY",90,2)=""
     
    ^demo.testD=3
    ^demo.testD(1)=$lb("",12)
    ^demo.testD(2)=$lb("",55)
    ^demo.testD(3)=$lb("",34)
    ^demo.testI("idxX",12,1)=""
    ^demo.testI("idxX",34,3)=""
    ^demo.testI("idxX",55,2)=""
    ^demo.testI("idxY",13,1)=""
    ^demo.testI("idxY",35,3)=""
    ^demo.testI("idxY",56,2)=""

    select * from demo.test

    IDXY112132555633435
    Ivan Durakи да, апдейт этих полей возможен?Нет, они же вычисляемые (хотя возможны варианты ).
    Но апдейт можно сделать полям, от которых они зависят, тогда и эти поменяют свои значения (перевычислятся).
    ...
    Рейтинг: 0 / 0
    В каких СУБД есть такая штука...
        #38836470
    Фотография a_voronin
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    Участник
    ...
    Рейтинг: 0 / 0
    73 сообщений из 73, показаны все 3 страниц
    Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / В каких СУБД есть такая штука...
    Найденые пользователи ...
    Разблокировать пользователей ...
    Читали форум (0):
    Пользователи онлайн (0):
    x
    x
    Закрыть


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