powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск данных - что быстрее Oracle или Java
44 сообщений из 44, показаны все 2 страниц
Поиск данных - что быстрее Oracle или Java
    #38533563
DontAskMe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.

Для любителей поразглагольствовать предлагается вопрос - где быстрее поиск в Oracle или Java? Ниже конкретный пример.
Допустим, есть данные следующей структуры:

- Фамилия
- Имя
- Отчество
- Дата рождения
- Место жительства
- Телефон

Кол-во данных 10^9 записей. Ведем поиск строго по фамилии. Ограничение на ресурсы сервера одинаковые, оперативной памяти много.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38533576
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё один вопрос аналогичной осмысленности: Кто кого заборет, если слон нападёт на кита?
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38533578
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формат хранения данных?

Но вообще вопрос из разряда "Что расходует больше бензина - автомобиль или поездка в магазин"...
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38533588
stuffhappens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно, немного формулизирую запрос, хотя суть, думаю, понятна.

Я правильно понимаю, что минимальная сложность поиска в Oracle по таблице O(log(n)), где n - количество записей? А в Java при использовании hash-таблиц - константа. При этом, когда данных много, эта константа много меньше логарифмв?
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38533599
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неправильно.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38533614
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stuffhappens,

Наверное, для любой константы найдется сферическая n, такая что O(log(n))> константы, но причем здесь java и oracle?
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38533646
stuffhappens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лагман,

Я для этого привел пример. Миллиард записей.

Akina,

Что неправильно?
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38533697
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stuffhappensЛадно, немного формулизирую запрос, хотя суть, думаю, понятна.

Я правильно понимаю, что минимальная сложность поиска в Oracle по таблице O(log(n)), где n - количество записей? А в Java при использовании hash-таблиц - константа. При этом, когда данных много, эта константа много меньше логарифмв?
Хеш тейбла это та еще серебранная пуля. Но ты можешь юзать другую реализацию мапы на базе
бинарных деревьев в Java и получишь эффект в виде логарифмического времени. Сказать что
будет быстрее - сложно т.к. двух одинаковых конфигураций не получается. Если ты напишешь
синтетический тест, то я готов спорить что напишешь неправильно и не учтёшь накладных расходов
на JDBC/TTC. Поэтому пользы в нём не будет никакой (цифры будут необъективные) а теория так и останется теорией и
формула логарифма будет стоять незыблемо.

У хеш тейблы будет другой недостаток в виде скачкообразного реаллоцирования Heap во время
загрузки туда данных. Особенно если ты не знаешь сколько у тебя записей заранее. На этом
можно погореть если ты понадеялся на малый отклик для каждого insert.

А реализация hashtable есть и у Oracle. Правда надо ставить OracleTimesTen. Это спецом для работы In-memory.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38533971
DontAskMe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Спасибо за ответ. Но мне так все еще не понятно - какова минимальная сложность поиска по таблицам Oracle?
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534019
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)Если же говорить о сравнении оракла и жабы, то... Поработайте с ораклом годик-другой, и вся ваша дурь из головы выйдет сама собой.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534030
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DontAskMemayton,

Спасибо за ответ. Но мне так все еще не понятно - какова минимальная сложность поиска по таблицам Oracle?Жаба работает с данными в оперативной памяти, а таблицы оракла обычно лежат на жестком диске. Скорость доступа к оперативке намного выше, а на диске может лежать на 2 - 3 порядка больше данных. При этом оракл имеет много различных свистелок (партицирование, индексы, кэширование и т. д.), позволяющих творить чудеса (а если вам надо в дальний космос, то есть еще экзадата). Если у вас все еще не возникло ощущения, что вы сравниваете кита со слоном, попробуйте сначала разобраться, почему.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534043
DontAskMe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rockclimber,

Поиск в среднем O(1) - константа. При использовании все возможных чудес Oracle какая сложность поиска?
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534054
DontAskMe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rockclimber,

Я не пытаюсь абстрактно сравнить Oracle и Java. Есть конкретная задача - описанная выше. Есть 2 инструмента, с помощью которых она решается. Нужно провести сравнение этих инструментов с точки зрения скорости выполнения задачи. С моей точки зрения, такое сравнение вполне корректно.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534150
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DontAskMerockclimber,

Поиск в среднем O(1) - константа. При использовании все возможных чудес Oracle какая сложность поиска?В среднем у Оракла сложность поиска тоже константа. Могу даже поискать страницу у Кайта, где это написано. Вы что, всерьез считаете, что в джаве есть какое-то поисковое ноухау, которое в оракл за 30 лет разработки не смогли бы повторить? При том, что владелец у обеих технологий один.
DontAskMeЕсть конкретная задача - описанная выше.То, что она конкретна - это ваша фантазия.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534175
DontAskMe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rockclimber,

Если сложность поиска в Oracle действительно может быть константа - тогда вопрос снимается. Если дадите ссылку, где написано в каком случае это происходит - буду благодарен.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534177
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stuffhappensЯ правильно понимаю, что минимальная сложность поиска в Oracle по таблице O(log(n)), где n - количество записей? А в Java при использовании hash-таблиц - константа. При этом, когда данных много, эта константа много меньше логарифмв?


В принципе, теоретически, ты понимаешь правильно.

Но есть много НО.

Для организации hash-таблицы расходуется достаточно много доп. памяти, так что для больших размеров данных хэш-таблицу ты вряд ли сможешь себе позволить, так что придётся использовать сортированный массив и тот же бинарный поиск.

Хэш-таблицы только теоретически имеют O(1). На практике существует такое явление как вырождение поиска, и он превращается
в линейный. Это происходит изза того, что хэширование теоретически должно быть равномерным за счёт случайных наборов ключей, а на практике могут быть наоборот наборы ключей детерминированные. Также универсальные хэш-функции не могут быть достаточно хорошими, а хорошие -- универсальными.

В общем, там куча проблем с большими данными.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534178
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА реализация hashtable есть и у Oracle. Правда надо ставить OracleTimesTen. Это спецом для работы In-memory.

Так это другой Оракл, не DB, а фирма. А СУБД соответственно другая.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534185
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DontAskMerockclimber,

Поиск в среднем O(1) - константа. При использовании все возможных чудес Oracle какая сложность поиска?

Ну, смотря какого поиска. Oracle DB строит например при выполнении HASH JOIN те же хэш-таблицы в памяти, и там сложность поиска тот же O(1) (теоретический). Как бы это тоже поиск.

Поиск по индексу в запросе типа

Код: sql
1.
select * from thetable where key = :key



максимально быстро -- это O(log N).

Но я тебе ещё раз говорю, что на 10^9 и Java ты вряд ли достигнешь чего-то большего.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534195
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И зачем нужно грузить всё в оперативную память - непонятно. Наверное речь
идёт о создании GUI-контрола который должен по первым буквам фамилии
выводить карточки клиента (абонента или физлица). Тогда можно попробовать
другую структуру данных соптимизированную на поиск префиксов.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534208
DontAskMe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Если минимальная сложность выполнения запроса
Код: plsql
1.
select * from thetable where key = :key



действительно O(log(n)), то какие сомнения, что поиск со сложностью константа (hash-таблицы в Java) будет идти быстрее?

mayton,
Задача про поиск по фамилии, функциональность по поиску по первым буквам не требуется.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534221
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DontAskMerockclimber,

Если сложность поиска в Oracle действительно может быть константа - тогда вопрос снимается. Если дадите ссылку, где написано в каком случае это происходит - буду благодарен.Том Кайт, "Oracle для профессионалов", глава про индексы. Что-то такое там было. Книга у меня есть в электронном виде, но только на домашнем ноуте.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534283
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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-ти. Я бы не называл это "много меньше".
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534421
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DontAskMerockclimber,

Поиск в среднем O(1) - константа. В той табличке кроме средней, есть еще и правая колонка.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534535
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно что на 1 000 000 000 карточек физ-лиц с большой вероятностью
будут однофамильцы. Как автор планировал их грузить в hash-tables (*maps)
- непонятно.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534566
DontAskMe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Значение - коллекция.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534579
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DontAskMe, в DBMS Oracle ты тоже планировал использовать коллекции?
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534589
ДохтаР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИнтересно что на 1 000 000 000 карточек физ-лиц с большой вероятностью
будут однофамильцы. Как автор планировал их грузить в hash-tables (*maps)
- непонятно.

Жаль, что топик про Стебелек убили, там в лулзо-популярной все было разжевано.
Баянить не интересно.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534771
ChronSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПоиск по индексу в запросе типа

Код: sql
1.
select * from thetable where key = :key



максимально быстро -- это 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ГБ ОЗУ будет?
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534785
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично мне во всём этом буйстве п(р)ограмисткой мысли неясно только одно: откуда на земном шаре миллиард фамилий???
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534801
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет у него столько фамилий. Не для Китая-же он базу пилит. Просто чел.
интересуется производительностью.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534813
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Водитель, помни - даже в бардачке должен быть порядок!"
Это я к тому, что в идиотской постановке "поиска строго по фамилии в миллиардной базе" основное время тратится не на поиск, а на выдачу гигантского результата несчастному клиенту.

P.S. Это Китай часть земного шара, а не наоборот.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534836
ChronSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЛично мне во всём этом буйстве п(р)ограмисткой мысли неясно только одно: откуда на земном шаре миллиард фамилий???
Это же не уникальных записей - фамилии будут повторяться.
А от откуда у автора в базе миллиард учетников - становится видно из его фотографии:
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534837
ChronSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эдвард Сноуден передал эксклюзивное фото в редакцию ИФ. На нем мы видим, как агенты ФБР просматривают переписки всех граждан Европы.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534853
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДа нет у него столько фамилий. Не для Китая-же он базу пилит. Просто чел.
интересуется производительностью.
Для китая это не актуально. Там сильно выражен институт семьи, поэтому там фамилия это святое.
Если верить ненадежным источникам
wikiНасчитывается более 700 различных китайских фамилий, но лишь двадцать из них используются у подавляющей части китайского народа
получается что оставшиеся 6 млрд. человек имеют 1 млрд. фамилий. Что тоже невозможно.

Вывод: это база с переписью населения неведомой цивилизации использующей GUID вместо фамилии
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534855
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChronSQLЭто же не уникальных записей - фамилии будут повторятьсяИ?
Накойхер (фамилие такое) считать фигню по поиску, если основная проблема - выдача гигантского списка однофамильцев.

P.S. Если кто не помнит, то средневековые схоласты обсуждали проблему: "Сколько чертей может поместиться на конце иглы?"
Без дураков, на полном серьёзе.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534863
Homme qui est interdit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DontAskMe
Кол-во данных 10^9 записей. Ведем поиск строго по фамилии. Ограничение на ресурсы сервера одинаковые, оперативной памяти много.Я даже сразу могу сказать, в Оракле индексированные данные по полю фамилия или чистые?
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534866
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovP.S. Если кто не помнит, то средневековые схоласты обсуждали проблему: "Сколько чертей может поместиться на конце иглы?"
Без дураков, на полном серьёзе.
Там речь об ангелах шла вообще-то. А по сабжу индексирование
было-бы полезным и селективным если-б Фамили заменить на nickname
в социальной сети.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38534902
Homme qui est interdit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimber Вы что, всерьез считаете, что в джаве есть какое-то поисковое ноухау, которое в оракл за 30 лет разработки не смогли бы повторить? да, есть
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38535199
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
F#
Гость
DontAskMeДля любителей поразглагольствовать предлагается вопрос - где быстрее поиск в Oracle или Java?

Я думаю, если вопрос звучит именно так, то, наверное, в яве ибо оракул содержит неотключаемый оверхед для управления многопользовательским доступом к этой штуке перзистентностью и прочим.
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38535351
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Homme qui est interditrockclimber Вы что, всерьез считаете, что в джаве есть какое-то поисковое ноухау, которое в оракл за 30 лет разработки не смогли бы повторить? да, естьозвучь, не томи
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38535594
Homme qui est interdit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F#оракул содержит неотключаемый оверхед для управления многопользовательским доступом к этой штуке перзистентностью и прочим.отож
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38535602
Homme qui est interdit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychHomme qui est interditпропущено...
да, естьозвучь, не томиВ орацле для ускорения поиска есть такая фишка как TimesTen, сдернутая орацлом у жабы. Был орацл быстрее жабы в осуществлении поиска - никакого TimesTen не стали бы в орацлу впихуевывать
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38535640
locked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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."
...
Рейтинг: 0 / 0
Поиск данных - что быстрее Oracle или Java
    #38543915
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Homme qui est interditВ орацле для ускорения поиска есть такая фишка как TimesTen, сдернутая орацлом у жабы. Вообще-то TimesTen это отдельная база данных, которая была куплена ораклом. Никакого отношения кроме налчия драйверов к java он не имеет.
Вот TimesTen рабоатет РЕАЛЬНО быстро, главное с ним тормозной Java не использовать
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск данных - что быстрее Oracle или Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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