powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск данных - что быстрее Oracle или Java
25 сообщений из 44, страница 1 из 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
25 сообщений из 44, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск данных - что быстрее Oracle или Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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