|
|
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Всем добрый день. Для любителей поразглагольствовать предлагается вопрос - где быстрее поиск в Oracle или Java? Ниже конкретный пример. Допустим, есть данные следующей структуры: - Фамилия - Имя - Отчество - Дата рождения - Место жительства - Телефон Кол-во данных 10^9 записей. Ведем поиск строго по фамилии. Ограничение на ресурсы сервера одинаковые, оперативной памяти много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 18:48 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Ещё один вопрос аналогичной осмысленности: Кто кого заборет, если слон нападёт на кита? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 19:02 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Формат хранения данных? Но вообще вопрос из разряда "Что расходует больше бензина - автомобиль или поездка в магазин"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 19:03 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Ладно, немного формулизирую запрос, хотя суть, думаю, понятна. Я правильно понимаю, что минимальная сложность поиска в Oracle по таблице O(log(n)), где n - количество записей? А в Java при использовании hash-таблиц - константа. При этом, когда данных много, эта константа много меньше логарифмв? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 19:17 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 19:26 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
stuffhappens, Наверное, для любой константы найдется сферическая n, такая что O(log(n))> константы, но причем здесь java и oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 19:34 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Лагман, Я для этого привел пример. Миллиард записей. Akina, Что неправильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 20:02 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
stuffhappensЛадно, немного формулизирую запрос, хотя суть, думаю, понятна. Я правильно понимаю, что минимальная сложность поиска в Oracle по таблице O(log(n)), где n - количество записей? А в Java при использовании hash-таблиц - константа. При этом, когда данных много, эта константа много меньше логарифмв? Хеш тейбла это та еще серебранная пуля. Но ты можешь юзать другую реализацию мапы на базе бинарных деревьев в Java и получишь эффект в виде логарифмического времени. Сказать что будет быстрее - сложно т.к. двух одинаковых конфигураций не получается. Если ты напишешь синтетический тест, то я готов спорить что напишешь неправильно и не учтёшь накладных расходов на JDBC/TTC. Поэтому пользы в нём не будет никакой (цифры будут необъективные) а теория так и останется теорией и формула логарифма будет стоять незыблемо. У хеш тейблы будет другой недостаток в виде скачкообразного реаллоцирования Heap во время загрузки туда данных. Особенно если ты не знаешь сколько у тебя записей заранее. На этом можно погореть если ты понадеялся на малый отклик для каждого insert. А реализация hashtable есть и у Oracle. Правда надо ставить OracleTimesTen. Это спецом для работы In-memory. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 21:05 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
mayton, Спасибо за ответ. Но мне так все еще не понятно - какова минимальная сложность поиска по таблицам Oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 10:17 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
stuffhappensЛадно, немного формулизирую запрос, хотя суть, думаю, понятна. Я правильно понимаю, что минимальная сложность поиска в Oracle по таблице O(log(n)), где n - количество записей? А в Java при использовании hash-таблиц - константа. При этом, когда данных много, эта константа много меньше логарифмв?Педивикия, однако, не согласна c константой: http://ru.wikipedia.org/wiki/Хеш-таблица Временная сложность в О-символике В среднемВ худшем случаеРасход памятиO(n)O(n)ПоискO(1)O(n)Вставка O(1)O(n)УдалениеO(1)O(n)Если же говорить о сравнении оракла и жабы, то... Поработайте с ораклом годик-другой, и вся ваша дурь из головы выйдет сама собой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 10:57 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
DontAskMemayton, Спасибо за ответ. Но мне так все еще не понятно - какова минимальная сложность поиска по таблицам Oracle?Жаба работает с данными в оперативной памяти, а таблицы оракла обычно лежат на жестком диске. Скорость доступа к оперативке намного выше, а на диске может лежать на 2 - 3 порядка больше данных. При этом оракл имеет много различных свистелок (партицирование, индексы, кэширование и т. д.), позволяющих творить чудеса (а если вам надо в дальний космос, то есть еще экзадата). Если у вас все еще не возникло ощущения, что вы сравниваете кита со слоном, попробуйте сначала разобраться, почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 11:05 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
rockclimber, Поиск в среднем O(1) - константа. При использовании все возможных чудес Oracle какая сложность поиска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 11:15 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
rockclimber, Я не пытаюсь абстрактно сравнить Oracle и Java. Есть конкретная задача - описанная выше. Есть 2 инструмента, с помощью которых она решается. Нужно провести сравнение этих инструментов с точки зрения скорости выполнения задачи. С моей точки зрения, такое сравнение вполне корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 11:21 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
DontAskMerockclimber, Поиск в среднем O(1) - константа. При использовании все возможных чудес Oracle какая сложность поиска?В среднем у Оракла сложность поиска тоже константа. Могу даже поискать страницу у Кайта, где это написано. Вы что, всерьез считаете, что в джаве есть какое-то поисковое ноухау, которое в оракл за 30 лет разработки не смогли бы повторить? При том, что владелец у обеих технологий один. DontAskMeЕсть конкретная задача - описанная выше.То, что она конкретна - это ваша фантазия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:33 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
rockclimber, Если сложность поиска в Oracle действительно может быть константа - тогда вопрос снимается. Если дадите ссылку, где написано в каком случае это происходит - буду благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:50 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
stuffhappensЯ правильно понимаю, что минимальная сложность поиска в Oracle по таблице O(log(n)), где n - количество записей? А в Java при использовании hash-таблиц - константа. При этом, когда данных много, эта константа много меньше логарифмв? В принципе, теоретически, ты понимаешь правильно. Но есть много НО. Для организации hash-таблицы расходуется достаточно много доп. памяти, так что для больших размеров данных хэш-таблицу ты вряд ли сможешь себе позволить, так что придётся использовать сортированный массив и тот же бинарный поиск. Хэш-таблицы только теоретически имеют O(1). На практике существует такое явление как вырождение поиска, и он превращается в линейный. Это происходит изза того, что хэширование теоретически должно быть равномерным за счёт случайных наборов ключей, а на практике могут быть наоборот наборы ключей детерминированные. Также универсальные хэш-функции не могут быть достаточно хорошими, а хорошие -- универсальными. В общем, там куча проблем с большими данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:50 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
maytonА реализация hashtable есть и у Oracle. Правда надо ставить OracleTimesTen. Это спецом для работы In-memory. Так это другой Оракл, не DB, а фирма. А СУБД соответственно другая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:52 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
DontAskMerockclimber, Поиск в среднем O(1) - константа. При использовании все возможных чудес Oracle какая сложность поиска? Ну, смотря какого поиска. Oracle DB строит например при выполнении HASH JOIN те же хэш-таблицы в памяти, и там сложность поиска тот же O(1) (теоретический). Как бы это тоже поиск. Поиск по индексу в запросе типа Код: sql 1. максимально быстро -- это O(log N). Но я тебе ещё раз говорю, что на 10^9 и Java ты вряд ли достигнешь чего-то большего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 12:56 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
И зачем нужно грузить всё в оперативную память - непонятно. Наверное речь идёт о создании GUI-контрола который должен по первым буквам фамилии выводить карточки клиента (абонента или физлица). Тогда можно попробовать другую структуру данных соптимизированную на поиск префиксов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 13:03 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Если минимальная сложность выполнения запроса Код: plsql 1. действительно O(log(n)), то какие сомнения, что поиск со сложностью константа (hash-таблицы в Java) будет идти быстрее? mayton, Задача про поиск по фамилии, функциональность по поиску по первым буквам не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 13:15 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
DontAskMerockclimber, Если сложность поиска в Oracle действительно может быть константа - тогда вопрос снимается. Если дадите ссылку, где написано в каком случае это происходит - буду благодарен.Том Кайт, "Oracle для профессионалов", глава про индексы. Что-то такое там было. Книга у меня есть в электронном виде, но только на домашнем ноуте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 13:19 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
stuffhappensЛадно, немного формулизирую запрос, хотя суть, думаю, понятна. Я правильно понимаю, что минимальная сложность поиска в Oracle по таблице O(log(n)), где n - количество записей? А в Java при использовании hash-таблиц - константа. При этом, когда данных много, эта константа много меньше логарифмв? Не вижу тут "много меньше". Количество шагов в бинарном поиске log2(10^N) = N * 3.322 Т.е. для поиска в миллиарде записей бинарным поиском надо будет сделать 30 шагов, для 1000 записей - 10 шагов, для 10 - 4 шага и т.д. Итого: поиск в 1`000`000`000 записей медленнее в три раза чем в 1`000 записей и в 8 раз медленнее чем в 10-ти. Я бы не называл это "много меньше". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 13:53 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
DontAskMerockclimber, Поиск в среднем O(1) - константа. В той табличке кроме средней, есть еще и правая колонка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 15:09 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Интересно что на 1 000 000 000 карточек физ-лиц с большой вероятностью будут однофамильцы. Как автор планировал их грузить в hash-tables (*maps) - непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 16:04 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
mayton, Значение - коллекция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 16:17 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
DontAskMe, в DBMS Oracle ты тоже планировал использовать коллекции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 16:22 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
maytonИнтересно что на 1 000 000 000 карточек физ-лиц с большой вероятностью будут однофамильцы. Как автор планировал их грузить в hash-tables (*maps) - непонятно. Жаль, что топик про Стебелек убили, там в лулзо-популярной все было разжевано. Баянить не интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 16:27 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
MasterZivПоиск по индексу в запросе типа Код: sql 1. максимально быстро -- это O(log N). Но я тебе ещё раз говорю, что на 10^9 и Java ты вряд ли достигнешь чего-то большего. Это если B-tree индекс. А можно и без OracleTimesTen, в обычном Oracle начиная с 9i создать hash-cluster состоящий только из одной таблицы, тот же hash-index с O(1): http://docs.oracle.com/cd/B10501_01/server.920/a96521/hash.htm#1347 автор Situations Where Hashing Is Useful SELECT ... WHERE cluster_key = ...; Situations Where Hashing Is Not Advantageous SELECT . . . WHERE cluster_key < . . . ; DontAskMe - Фамилия - Имя - Отчество - Дата рождения - Место жительства - Телефон Кол-во данных 10^9 записей. Ведем поиск строго по фамилии. Ограничение на ресурсы сервера одинаковые, оперативной памяти много. Как минимум, ФИО 3*15 байт + место жительства 50 байт = уже 95 байт на строку * 1млрд ~= 100 ГБ только чистых данных, но плюс оверхеды. Вы на Java сервер думаете писать, на железе 200ГБ ОЗУ будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 18:41 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Лично мне во всём этом буйстве п(р)ограмисткой мысли неясно только одно: откуда на земном шаре миллиард фамилий??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 18:49 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Да нет у него столько фамилий. Не для Китая-же он базу пилит. Просто чел. интересуется производительностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 18:58 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
"Водитель, помни - даже в бардачке должен быть порядок!" Это я к тому, что в идиотской постановке "поиска строго по фамилии в миллиардной базе" основное время тратится не на поиск, а на выдачу гигантского результата несчастному клиенту. P.S. Это Китай часть земного шара, а не наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 19:07 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЛично мне во всём этом буйстве п(р)ограмисткой мысли неясно только одно: откуда на земном шаре миллиард фамилий??? Это же не уникальных записей - фамилии будут повторяться. А от откуда у автора в базе миллиард учетников - становится видно из его фотографии: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 19:27 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Эдвард Сноуден передал эксклюзивное фото в редакцию ИФ. На нем мы видим, как агенты ФБР просматривают переписки всех граждан Европы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 19:28 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
maytonДа нет у него столько фамилий. Не для Китая-же он базу пилит. Просто чел. интересуется производительностью. Для китая это не актуально. Там сильно выражен институт семьи, поэтому там фамилия это святое. Если верить ненадежным источникам wikiНасчитывается более 700 различных китайских фамилий, но лишь двадцать из них используются у подавляющей части китайского народа получается что оставшиеся 6 млрд. человек имеют 1 млрд. фамилий. Что тоже невозможно. Вывод: это база с переписью населения неведомой цивилизации использующей GUID вместо фамилии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 19:49 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
ChronSQLЭто же не уникальных записей - фамилии будут повторятьсяИ? Накойхер (фамилие такое) считать фигню по поиску, если основная проблема - выдача гигантского списка однофамильцев. P.S. Если кто не помнит, то средневековые схоласты обсуждали проблему: "Сколько чертей может поместиться на конце иглы?" Без дураков, на полном серьёзе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 19:49 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
DontAskMe Кол-во данных 10^9 записей. Ведем поиск строго по фамилии. Ограничение на ресурсы сервера одинаковые, оперативной памяти много.Я даже сразу могу сказать, в Оракле индексированные данные по полю фамилия или чистые? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 19:55 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovP.S. Если кто не помнит, то средневековые схоласты обсуждали проблему: "Сколько чертей может поместиться на конце иглы?" Без дураков, на полном серьёзе. Там речь об ангелах шла вообще-то. А по сабжу индексирование было-бы полезным и селективным если-б Фамили заменить на nickname в социальной сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 19:58 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
rockclimber Вы что, всерьез считаете, что в джаве есть какое-то поисковое ноухау, которое в оракл за 30 лет разработки не смогли бы повторить? да, есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 20:47 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
DontAskMeДля любителей поразглагольствовать предлагается вопрос - где быстрее поиск в Oracle или Java? Я думаю, если вопрос звучит именно так, то, наверное, в яве ибо оракул содержит неотключаемый оверхед для управления многопользовательским доступом к этой штуке перзистентностью и прочим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 09:53 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Homme qui est interditrockclimber Вы что, всерьез считаете, что в джаве есть какое-то поисковое ноухау, которое в оракл за 30 лет разработки не смогли бы повторить? да, естьозвучь, не томи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 11:37 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
F#оракул содержит неотключаемый оверхед для управления многопользовательским доступом к этой штуке перзистентностью и прочим.отож ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 14:18 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
egorychHomme qui est interditпропущено... да, естьозвучь, не томиВ орацле для ускорения поиска есть такая фишка как TimesTen, сдернутая орацлом у жабы. Был орацл быстрее жабы в осуществлении поиска - никакого TimesTen не стали бы в орацлу впихуевывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 14:25 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Homme qui est interditпропущено... такая фишка как TimesTen, сдернутая орацлом у жабы. А при чем сдесь жаба? TimesTen "TimesTen functionality is contained in a set of shared libraries that application developers link to their application, allowing TimesTen to execute as part of the application's process." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 14:42 |
|
||
|
Поиск данных - что быстрее Oracle или Java
|
|||
|---|---|---|---|
|
#18+
Homme qui est interditВ орацле для ускорения поиска есть такая фишка как TimesTen, сдернутая орацлом у жабы. Вообще-то TimesTen это отдельная база данных, которая была куплена ораклом. Никакого отношения кроме налчия драйверов к java он не имеет. Вот TimesTen рабоатет РЕАЛЬНО быстро, главное с ним тормозной Java не использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 16:46 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1341486]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
139ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 427ms |

| 0 / 0 |
