|
|
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
pkarklinНапример, регистро- и акценто-нечувствительность\нечуствительность в MS SQL может быть задана вплоть до уровня отдельного поля в таблице. И как идёт регистронечувствительный поиск по покрывающему индексу? Каждая строка из индекса приводится в верхний/нижний регистр перед сравнением с образцом? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 13:06 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovИ как идёт регистронечувствительный поиск по покрывающему индексу? Каждая строка из индекса приводится в верхний/нижний регистр перед сравнением с образцом? Что за привычка отвечать вопросом на вопрос... В следующем примере создано "нечуствительное поле" в чуствительной бд: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Т.е. неявно конвертиться не "строка индекса", а строковый литерал, который по дефолту имеет такой же коллэйшен, как и у бд. Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Сравните с: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 13:39 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
Ivan DurakА в оракле тоже непокрывающие чтоли? аки в фб? нет. в Оракле версионность блоков, в ФБ версионность записей. в блоке хранится номер версии, влазит меньше данных. но блок лежит ПОД индексами, и ни индексы ни данные про версии не знают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 13:51 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
pkarklinТ.е. неявно конвертиться не "строка индекса", а строковый литерал Для сравнения всегда нужны двое. Литерал ты проконвертил, отлично. С чем он теперь сравнивается? Очевидно, что с неким ключом из индекса. Как сравнивается? Очевидно, регистронечувствительно. Как такое сравнение вообще возможно? Сюрприз, но для этого оба аргумента функции stricmp() принудительно приводятся к одному регистру, после чего сравниваются двоично. Отсюда следует, что при поиске каждый ключ индекса преобразуется в верхний регистр. И так при каждом поиске. А эта операция недешева. Хоть и дешевле дискового В/В. Но при некотором (достаточно большом) количестве сравнений данный алгоритм может проиграть тому, который в индексах хранит уже преобразованное значение и использует только двоичное сравнение. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 14:01 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Если было бы так, как написано, то никакого бы seek не было. Был бы scan. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 15:31 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
pkarklinЕсли было бы так, как написано, то никакого бы seek не было. Был бы scan. Ну а как тогда оно происходит у MS в брюхе? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 15:36 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
ScareCrowIvan DurakА в оракле тоже непокрывающие чтоли? аки в фб? нет. в Оракле версионность блоков, в ФБ версионность записей. в блоке хранится номер версии, влазит меньше данных. но блок лежит ПОД индексами, и ни индексы ни данные про версии не знают. Т.е. так же в FB данные берутся не из индексов, а из блоков(в FB из записей). И также как в FB для индекс скана могут использоваться одновременно несколько индексов? А в IOT оракловом что позволят брать данные из индекса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 18:58 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
Индекс СпособовичА в IOT оракловом что позволят брать данные из индекса? То, что все данные находятся на листовом уровне индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 19:02 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
Le PeaceИндекс СпособовичА в IOT оракловом что позволят брать данные из индекса? То, что все данные находятся на листовом уровне индекса. И записи о версиях там же? А поля по которым построен индекса дублируются в листовом уровне индекса или беруться непосредственно из индекса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 19:17 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Индекс Способовичпропущено... ZXY<Zxy<abc и ZXY<ZXY<ABC ) Это называется коллизии, они так же не позволяют сохранять порядок. Если не ограничивать пространство арбузов узкими рамками тыквины, а ещё и яблоки арбузами называть. Я не настаиваю, но я бы предпочел называть функции подходящие под определение хэш-функции. Но не верьте мне, я просто беру частные случаи, на самом деле вы правы. Кстати, а как в Oracle с этим дело обстоит, там данные берутся из индекса? определение хэш функции соблаговолите представить :) а то получается почти как про 7 красных линий Про 7 линий шикарно ) Хэш-функцией называется односторонняя функция, предназначенная для получения дайджеста или "отпечатков пальцев" файла, сообщения или некоторого блока данных. Хэш-код создается функцией Н: h = H (M) Где М является сообщением произвольной длины и h является хэш-кодом фиксированной длины. Хэш-функция Н, которая используется для аутентификации сообщений, должна обладать следующими свойствами: 1. Хэш-функция Н должна применяться к блоку данных любой длины. 2. Хэш-функция Н создает выход фиксированной длины. 3. Н(М) относительно легко (за полиномиальное время) вычисляется для любого значения М. 4. Для любого данного значения хэш-кода h вычислительно невозможно найти M такое, что Н(M) = h. 5. Для любого данного х вычислительно невозможно найти y<>x, что H(y) = H(x). 6. Вычислительно невозможно найти произвольную пару (х,y) такую, что H(y) = H(x). Хэш-функция, которая удовлетворяет первым пяти свойствам, называется простой или слабой хэш-функцией. Если кроме того выполняется шестое свойство, то такая функция называется сильной хэш-функцией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 19:38 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
авторИ записи о версиях там же? А поля по которым построен индекса дублируются в листовом уровне индекса или беруться непосредственно из индекса? в Оракле записи о версиях хранятся уровнем ниже. в блоках. ни индексы ни данные про версии не знают. IOT это та же самая таблица, только завязанная в двунаправленный сортированный список по ключевым полям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 21:08 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
авторТ.е. так же в FB данные берутся не из индексов, а из блоков(в FB из записей). в ФБ нельзя получить данные только из индекса, потому что прочитав индекс, ты не знаешь - видим ли элемент для твоей транзакции. в оракле ты это знаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 21:10 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
On 30.03.2011 20:38, Индекс Способович wrote: Какое-то дебильное определение хэш-функции. > 4. Для любого данного значения хэш-кода h вычислительно невозможно найти M > такое, что Н(M) = h. > 5. Для любого данного х вычислительно невозможно найти y<>x, что H(y) = H(x). Ну а это просто враньё. Как раз наоборот, таких разных M и разных y будет много, которые дадут один и тот же h. В этом самая суть хэш-функции. Если этого нет -- это не хеш-функция, а свёртка. > 6. Вычислительно невозможно найти произвольную пару (х,y) такую, что H(y) = H(x). > > Хэш-функция, которая удовлетворяет первым пяти свойствам, называется простой или > слабой хэш-функцией. Это вообще не хеш-функция. Конечно, может быть у тебя какая-то своя, другая терминология, тогда уж укажи в начале послания, что, да как. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 21:13 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
MasterZiv знаете что такое "вычислительно невозможно найти" ) И приведите своё правильное и четкое определение хэш-функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 23:06 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
ScareCrowв Оракле записи о версиях хранятся уровнем ниже. в блоках. ни индексы ни данные про версии не знают . ScareCrow в ФБ нельзя получить данные только из индекса, потому что прочитав индекс , ты не знаешь - видим ли элемент для твоей транзакции. в оракле ты это знаешь. Что-то я совсем запутался. Как индексы не зная про версии знают видим ли элемент для твоей транзакции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2011, 23:10 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
kdvSk1N.Сначала ключей меньше чем версий, потом обратное: ключей не может быть меньше чем версий. Где описка? :) ошибка во второй части. количество записей <= количество ключей <= количество записей+версий pkarklinЯ правильно понимаю, что в ФБ хранение в индексе хэша, а не данных Вы объясняете версионностью? нет. И про "хэш в индексе" Сибиряков уже объяснил, что ОН имел в виду. Хранятся, конечно, данные , только из-за отсутствия в ключе информации о транзакции невозможно определить видимость ключа без определения видимости записи. Т.е. именно данные хранятся в индексе? А при Read Uncommited браться из индекса данные не смогут? Учитывая что FB можно использовать как embedded. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2011, 01:34 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
Индекс СпособовичА при Read Uncommited браться из индекса данные не смогут? Не могут, поскольку во-первых, нет в FB Read Uncommitted. А во-вторых, то, что можно достать из индекса это не то, что стоило бы показывать пользователю. Как я уже неоднократно говорил, функция преобразования значения в ключ в общем случае необратима. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2011, 01:40 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
Индекс СпособовичТ.е. именно данные хранятся в индексе? А при Read Uncommited браться из индекса данные не смогут? Учитывая что FB можно использовать как embedded. блжад. Embedded, не Embedded, никакой разницы. Версионность движка неотключаема, и это хорошо, ибо базе по барабану, "выделенный" сервер с ней работает, или сервер в виде exe+embedded. Далее, в ФБ нет Read Uncommitted в принципе. Более того, до версии 4.0 в InterBase не было Read Committed, был только Repeatable Read. Ну и, наконец, данные из индекса браться никак не могут, я уже объяснял почему. Пример1: запись, столбец field имеет значение 1, столбец проиндексирован, в индексе хранится ключ 1 со ссылкой на запись. новая транзакция модифицирует запись, но не меняет столбец field. Имеем 2 версии, при этом в индексе 1 ключ, ссылающийся на одну и ту же запись (у которой 2 версии). Пример2: запись, столбец field имеет значение 1, --//--- новая транзакция модифицирует запись, меняет столбец field на 2. Имеем 2 версии, при этом в индексе 2 разных ключа, ссылающихся на одну и ту же запись, видимую разным транзакциям (2 версии). Что для примера 1, что для примера 2, видимость конкретной версии для конкретной транзакции определяется только номером и состоянием транзакции, создавшей конкретную версию. В ключах индекса этой информации нет. Значит, хоть ключ и содержит данные, для определения видимости сервер должен считать конкретную версию, чтобы понять, какой транзацкции что можно видеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2011, 04:51 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
On 31.03.2011 0:06, Индекс Способович wrote: > знаете что такое "вычислительно невозможно найти" ) Не, не знаю. Я знаю, что такое "можно найти" и знаю, что такое "нельзя найти". А "вычислительно невозможно найти" это очень похоже на "немножко беременна". Это как в EMC люди откровенно считают, что хэш-функция даёю уникальный код для своего аргумента. > И приведите своё правильное и четкое определение хэш-функции. Я что тут в преподаватели нанялся ? Найди литературу, почитай. Хопкрофта книга была хорошая. Ахо etc тоже. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2011, 11:49 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
MasterZiv> знаете что такое "вычислительно невозможно найти" ) Не, не знаю. Я знаю, что такое "можно найти" и знаю, что такое "нельзя найти". А "вычислительно невозможно найти" это очень похоже на "немножко беременна". если на поиск потребуется миллиард лет - это "можно найти" или "нельзя найти"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2011, 12:21 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
On 31.03.2011 13:21, SergSuper wrote: > если на поиск потребуется миллиард лет - это "можно найти" или "нельзя найти"? Это -- "можно найти". Нерешаемая задача и сложнорешаемая задача -- не одно и то же. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2011, 12:38 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
MasterZivOn 31.03.2011 13:21, SergSuper wrote: > если на поиск потребуется миллиард лет - это "можно найти" или "нельзя найти"? Это -- "можно найти". Нерешаемая задача и сложнорешаемая задача -- не одно и то же. т.е. никакой разницы нет между задачами которые, решаются считанным количеством тактов и и которые решаются годами? "вычислительно невозможно найти" и подразумевает что найти можно только теоретически, перебором, для использования получения данных не предназначено ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2011, 14:17 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
SergSuperMasterZivOn 31.03.2011 13:21, SergSuper wrote: > если на поиск потребуется миллиард лет - это "можно найти" или "нельзя найти"? Это -- "можно найти". Нерешаемая задача и сложнорешаемая задача -- не одно и то же. т.е. никакой разницы нет между задачами которые, решаются считанным количеством тактов и и которые решаются годами? "вычислительно невозможно найти" и подразумевает что найти можно только теоретически, перебором, для использования получения данных не предназначено У "вычислительно невозможно найти" - граница меняется с каждым годом. Это нечеткое определение. А ТС взял определение криптографического хэша и пытается присобачить его к СУБД. А тут никто не поймет, зачем такие навороты в зоопарке БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2011, 17:02 |
|
||
|
Способы реализации индексов
|
|||
|---|---|---|---|
|
#18+
SiemarglУ "вычислительно невозможно найти" - граница меняется с каждым годом. Это нечеткое определение.Вы действительно понятие "сложность вычислений" не слышали, или прикидываетесь? Почитайте про классы сложности. Все очень строго определено. Граница никуда не меняется и никак от быстродействия современных компьютеров не зависит. А вот от достижений математической мысли зависеть может :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2011, 17:25 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=37191159&tid=1552702]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 138ms |

| 0 / 0 |
