В чем преимущество oracle
Читая многочисленные статьи на хабре об успешной миграции с Oracle на PostgreSQL у неискушенного читателя может создаться впечатление что PostgreSQL ничем не хуже, а даже лучше Oracle. И выбор очевиден. А Сотни тысяч компаний, которые в итоге платят миллиарды долларов компании Oracle, просто тратят деньги на ветер. Но постараюсь вас разуверить, где-где, а в больших компаниях умеют считать деньги. И их решения отнюдь не ошибочны.
Цель статьи зародить зерно сомнения в душе читателя, который пытается сделать выбор между реляционными БД которые работают в режиме версионника. Почему именно режиме версионника? Здесь выбор не большой, а в блокировщиках есть достойные соперники и выбор еще сложнее.( Чего только стоит бесплатная версия DB2 для небольших БД).
Я не являюсь экспертом БД Oracle хотя и проработал с этой БД много лет и не только с ней. Все что я умею — использовать ее преимущества и добиться оптимального быстродействия. Я тем более не являюсь экспертом PostgreSQL (я не разу не использовал его в продакшене).
Читая статьи об успешной миграции — я понимаю что этим компаниям и не нужен был Oracle или БД была выбрана изначально не верно. Они использовали только малую долю возможностей этой БД. Только поэтому они могли принять решение об миграции, и его осуществить. Просто если использовать всю мощь этой БД — у вас никогда не возникнет желания мигрировать ибо это сродни написать ваше приложение почти с нуля.
Давайте, наконец, поговорим о тех преимуществах для быстродействия, которые дает Oracle и на основании этой информации Вы найдете ответ для себя сами.
- Partition(8i). Partition — дает возможность роста объема данных практически без влияния на общее быстродействие. Приятный и немаловажный бонус — партицирование индексов. У PostgreSQL партиции появятся только в 10 версии. До этого наследование (INHERITS) — грязный хак. Да и возможности партицирования в Oracle возрастают с каждой версией.
- Merge(8i). Да да, тот самый Merge который есть уже в MSSQL много лет(2008) и которого не будет даже в PostgreSQL 11. Он дает прирост в быстродействии в десятки раз по сравнению с одиночными операциями. Да я знаю что PostgreSQL поддерживает подзапросы и можно все реализовать через Insert select и хитрый update. Но это далеко не тоже самое.
- RESULT_CACHE (Select) (11g). У Oracle эта технология появилась относительно недавно. Если использовать эту технологию с умом — дает выигрыш в некоторых вещах в десятки и сотни раз. Главное научиться “умно” ее использовать.
- Опция INMEMORY (12с) Нет аналога у PostgreSQL. Реальный прирост на некоторых запросах сотни раз.
- Оптимизатор + тюнинг запросов. Начиная с 11g превратился чуть ли не в клик next->next в EM. PostgreSQL с этим посложнее да и отсутствие в целом аналога EM достаточно некомфортно.
- Компиляция. В байкод происходит во время сохранения (в PostgreSQL во время первого вызова в сессии + план запроса во время первого исполнения). Начиная с 10g в Oracle возможна компиляция в нативный код.
- Нативный Integer — значительно ускоряет работу с числами. В PostgreSQL можно использовать другие более подходящие языки(трансляторы). В оракла это тоже можно решить с помощью Java и С.
- Переключение “контекста” PL/SQL. Oracle очень заботится об оптимизации этого показателя, улучшая его от версии к версии. Для уменьшения задержек Переключение “контекста” придумати BULK COLLECT and FORALL и не только.
Я почти уверен что при одинаковом железе и использовании всех возможностей PostgreSQL и Oracle можно получить лучшее быстродействие, при меньших усилиях на ORACLE.
P.S. Ни в коем случае не рассматривайте эту статью как пиар БД Oracle.
Я хорошо понимаю, что обязательно есть вещи которые в PostgreSQL сделаны лучше. Но в целом Oracle в этом сегменте БД №1.
Я специально не затрагивал вещи связанные с администрированием. Просто представьте что вы можете перенести дата файл с диска на диск или восстановить «битый блок» в состоянии Online. И можете осуществить переход на новые сервера без остановки работы БД. И это не новые фичи. У Oracle там все намного лучше, да и я не являюсь админом БД.
Раньше, где то до 10 версии, админ был нужен практически всегда. Сейчас потребность в админе сильно упала, правда и квалификация админа сейчас нужна повыше. Возможно, в версии эдак 15, понятие “admin” БД уйдет в прошлое :)
Ну и я не затрагивал вещи, которые слабо помогают в быстродействии.
P.S.S. И да, я навряд ли я вспомнил все возможности. Только те которые были на “поверхности” Так что дописывайте в комментах. Я включу в upd.
Идея создания такой СУБД возникла у Ларри Эллинсона. В 77-м году, молодой студент Йельского университета бросил учебу и решил создать собственный бизнес. На тот момент, в его кармане было не более 1200 долларов. Он попросил своих друзей Боба и Эда, инвестировать в проект, но получил всего лишь +500$. С тех пор и началась история самой популярной реляционной СУБД.
Если требуется обсудить какой-то конкретный вопрос по базам данных Oracle и MySql, то проще всего посетить сообщество специалистов Oracle, специализированной социальной сети.
Преимущества данной СУБД
О том, что Oracle лидер среди других СУБД говорит хотя бы тот факт, что по данным полученным в 2007 году, СУБД охватывала 47% мирового рынка этой отрасли.
Данная СУБД имеет массу преимуществ.
Oracle поддерживает самые большие базы данных. Большое количество пользователей для этой системы также не помеха. СУБД способна поддерживать любых пользователей, в любом количестве, которые при этом одновременно выполняют разные задачи. В Oracle не происходит соперничества между разными видами данных.
СУБД Oracle хорошо обрабатывает транзакции. Система сохраняет высокую производительность, в результате чего пользователи не страдают от низкой скорости обработки.
Система обладает высокой степенью готовности. В разных установках, продолжительность работы Oracle индивидуальная. Так, например, в некоторых, система способна работать круглосуточно. При этом откат БД или какие-либо сбои системы не приводят к остановке работы базы.
Эта система обладает локальной управляемостью. Например, чтобы перезагрузить данные какого-то определенного приложения, не обязательно отключать всю систему. Администратору достаточно выключить доступ к нужному приложению и выполнить с ним требуемые манипуляции.
Данная СУБД легко переносится с одной ОС на другую. Приложения, которые были разработаны специально для Oracle, легко переносятся на любую операционную систему с минимальными изменениями, а иногда даже без них.
Оцените статью: Голосов
Пересекся вчера в дороге с одним программистом. Он начал довольно эмоционально втирать что MySQL это для школьников и блокнотиков, а для профи только Oracle. Любопытно Ваши мнения, в чем ИМЕННО преимущество данной СУБД над MySQL и PosgreSQL. Действительно ли профессиональный только Oracle? Или слииишком субъективное мнение?=)))
Оценить 1 комментарий
Если без холивара - то преимущество оно всегда одно - т.к. вы платите баб$сы, то имеете возможность позвонить в саппорт 24/7 и спросить, почему не стартует сервер СУБД после ваших манипуляций с ним. Конечно, для постгреса есть EnterpriseDB, и это довольно серьезные ребята, так что все упирается, как и всегда, в опыт и доверие. Оракл - это огромные вложения в инженерные решения, многолетний опыт поддержки по всему миру ну и прочие дела. Также, как и какой-нибудь DB2, которому тоже уже 40 лет стукнуло.
Когда вы храните в вашей БД данные стоимостью несколько миллионов долларов, становятся важны мелочи, не видные на первый взгляд - надежность восстановления после сбоев, отлаженность процедур бэкапа и восстановления, стоимость и оперативность масштабирования и еще 1000 и одна вещь.
Тут можно сказать две вещи:
1: Как и Windows - первый, значит самый известный и все думают, что лучший .
2: Реально - В Oracle есть пара фишек (из тех, что я знаю), которые очень актуальны в БОЛШИХ и ОЧЕНЬ БОЛЬШИХ базах данных. К примеру - Oracle RAC - быстро разворачиваемый кластерный доступ к базе данных. Плюс оптимизация использования кучи процессоров и моря памяти.
Так же Станислав Макаров дал очень актуальный ответ.
Но сейчас, в связи с обилием на рынке огромного выбора технологий баз данных, которые специализируются под решение разных задач - плюсы от использования Oracle DB мне кажутся сомнительными, учитывая цены на покупку и поддержку (ценовая политика компании Очень гадкая)
Для того, чтобы понять наиболее важные отличия стоит знать ответы на 4 вопроса.
1) Сколько строк каждая БД возвращает при селекте к заблокированной таблице?
Ответ для MyASM(MySQL) - 0, ответ для InnoDB - столько же, сколько и для незаблокированной (но сильно медленнее чем MyASM). Ответ для Oracle - столько же, сколько и для незаблокированной.
2) Каковы накладные расходы на транзакции. Ответ для MyASM(MySQL) - транзакция нет как феномена, ответ для InnoDB - расходы есть и значимы для больших систем. Ответ для Oracle - расходов нет.
3) Как восстановить данные после сбоя. Ответ для MyASM(MySQL) - никак, ответ для InnoDB - с трудом. Ответ для Oracle - как правило данная процедура не требуется.
4) Как с логикой на базе дела (в том числе для работы с бигдатой)? MySQL - возможностей не много, работает относительно медленно. Oracle - всего хватает.
И еще 100500 таких вопросов можно задать.
MySQl имеет немного преимуществ:
1) Скорость при односложных запросов, на малых данных, при однопользовательском доступе, без логики на базе.
2) Бесплатность.
С PgSQL все несколько сложнее. В целом она идет к тому, чтобы называться базой данных, а не блокнотиком =)
а еще для танчиков WoT, где варгейминг хранит 400Гб данных пользователей
// правда не в мускуле, а марииДБ
А яндекс уходит от Оракла на постгрес, тк оракл не дает своих исходников, а им очень хочется посмотреть почему у них все тормозит
В чем преимущество Oracle перед другими БД (например Postgres) в части касающейся работы с большим количеством строк данных?
- Вопрос задан более двух лет назад
- 502 просмотра
Коммерческая поддержка) На самом деле сейчас все базы +- одинаково работают - тут стоит смотреть отдельные кейсы vendor-specific, так сказать. Для большинства задач этот монстр не нужен
На ваш вопрос невозможно корректно ответить. Каждая СУБД обладает своими архитектурными особенностями и по сути является платформой, т.е. многие полезные вещи уже реализованы. Т.е. можно сравнивать две конкретные СУБД и рамках решения конкретной задачи. Как СУБД для ИС уровня предприятия, Oracle очень хороший выбор, т.к. обычно в таких системах нагрузка 50 на 50(50 запись\50 чтение). И в силу архитектурных особенностей Oracle(реализация транзакций и блокировок) справляется с такой эксплуатацией на ура. Плюс БД еще надо администрировать, заботиться о сохранности данных после сбоя(бэкапирование), туча функций и объектов для реализации бизнес-логики . короче много всего что нужно делать, и это уже реализовано в Oracle. И как бонус, Oracle более лоялен к рукожопости разработчиков, которые считают, что все БД одинаково работают и устроены. Если данных много и надо быстро их обрабатывать, можно посмотреть в сторону Exadata. Более подробно об особенностях можно почитать в документации. А во всем остальном нужно смотреть под конкретную задачу. Самый большой минус- это стоимость.
З.Ы.: И от себя лично добавлю, на заре карьеры я работал с MS SQL и возненавидел эту СУБД, как раз из-за реализаций транзакций и блокировок, и помогли мне в этом прежние разработчики. В MS SQL блокировки на уровне строк, но реализованы в общем пуле- общий пулл блокировок- это минус скорость(общий пулл надо блокировать, для записи или чтения этих блокировок) и плюс память. И чтобы не загружать особо сервер, прежние разрабы реализовали логику так, что процесс проходил мелкими транзакциями, конечно с коммитами. И были такие прецеденты, что данные удалились, а в другую таблицу не встали из-за ошибки в приложении. Потом дедлоки, это вообще отдельная тема, и приходилось разруливать изменением структуры данных, чтобы пользователи работали, только со своими данными. Короче вспоминаю, как страшный сон. Зато при разработке другой ИС где было решение взять Oracle как СУБД, через призму прошлого опыта, для меня было большое открытие, что там не будет такого гемороя, как с MS SQL. Конечно, может быть MS SQL сейчас сильно изменился в лучшую сторону, но осадочек у меня остался.
ince, не смогу дать точный ответ. Но как Капитан Очевидность отвечу: особенности архитектуры СУБД. Когда распараллеливаем нагрузку на большое количество серверов, то могут существенно расти накладные расходы на это распараллеливание. Вы же понимаете, что в действительности означает "масштабируемость"? На всякий случай пример.
Имеем БД на одном сервере и 100 пользователей. На Oracle условная производительность 100%, на другой СУБД (хорошо, пусть это будет Postgres) производительность даже 120%.
Стало 1000 пользователей. Купили еще 9 серверов. Oracle - 99%, Postgres - 99%.
Стало 10000 пользователей. Купили еще 90 серверов. Oracle - 95%, Postgres - 50%.
Стало 100000 пользователей. Купили еще 900 серверов. Oracle - 80%, Postgres - 10%.
Цифры полностью выдуманы из головы и могут быть совсем другие.
На мировом рынке корпоративных систем управления базами данных (СУБД) доминирующее положение занимает традиционная тройка продуктов: IBM DB2, Microsoft SQL Server и Oracle. Более 80% рынка СУБД в течение долгих лет контролируется тремя компаниями производителями: IBM, Oracle и Microsoft. По статистическим данным на рынке России лидирующее положение занимает Oracle, так как по статистическим данным за 2010 год, данная СУБД занимает более 60% всего рынка, среди других СУБД и около 30% мирового рынка СУБД. В 2017г. показатели по России не изменились, а в международном масштабе выросли.
СУБД Oracle имеет большое количество различных версии и типов. Данная СУБД выпускается одноименной компанией Oracle.
Компания Oracle была основана нынешним президентом компаний Лэрри Элисоном и Роберттом Майнором в 1977 году, в Рэдвуде, штат калифорния. Первая реляционная СУБД фирмы базировалась на модели IBM System/R и была первой системой, в которой использовался язык SQL, разработанный фирмой IBM.
На сегодняшний день СУБД Oracle поддерживают свыше 80 вариантов операционной среды в широком диапазоне, включая мэйнфреймы IBM, мини-компьютеры DEC VAX, UNIX, Windows и множество других платформ.
Для примера возьмем Oracle9i. Ядром СУБД является сервер базы данных, который поставляется в одной из четырех редакций в зависимости от масштаба информационной системы, в рамках которой предполагается его применение.
Для интернет-систем (public) и систем масштаба крупной организации (enterprise) предлагается продукт Oracle9i Database Enterprise Edition (корпоративная редакция), для которого имеется целый набор опций, архитектурно и функционально расширяющих возможности сервера. Продукт Oracle9i Database Standard Edition (стандартная редакция) ориентирован на организации среднего масштаба или подразделения в составе крупной организации (workgroup). Для персонального использования предлагается "персональный Oracle" (Oracle9i Database Personal Edition) , и для систем мобильной связи и небольших офисов — Oracle9i Database Lite. В стандартной, персональной и мобильной редакциях основной акцент сделан на невысокую стоимость, простоту установки и сопровождения. При этом все варианты сервера Oracle имеют в своей основе один и тот же исходный код и функционально идентичны , за исключением некоторых дополнительных опций, которые необходимы для специфических конфигураций (например, для поддержки кластерных архитектур необходима опция Oracle9i Real Application Clusters).
Основное преимущество такого подхода к построению СУБД — это идентичность кода для всех вариантов сервера баз данных. Для всех компьютерных платформ и архитектур существует единая СУБД Oracle, поставляемая в различных версиях, которая ведет себя одинаково и предоставляет одинаковую функциональность вне зависимости от платформы, на которой она установлена.
Одной из основных характеристик СУБД Oracle является функционирование системы на большинстве платформ. В том числе на больших ЭВМ, UNIX-серверах, персональных компьютерах и т. д.
Читайте также: