Подтвердить что ты не робот

Сервер SQL VS Oracle

Я изучаю SQL Server, но не знаю много о Oracle. Может ли кто-нибудь дать мне справедливое сравнение с ними? Я прочитал сравнение о SQL Server 2000 и Oracle 9i, но он немного устарел. До сих пор SQL Server 2008 догнал Oracle 11g/i?

4b9b3361

Ответ 1

Просто мои $0,02 после работы с SqlServer в течение многих лет и Oracle в течение 4 месяцев.

SqlServer гораздо проще в использовании, это позволяет вам сосредоточиться на том, что вы хотите, чтобы база данных выполняла (решая некоторые бизнес-задачи), а не постоянно решая сервер.

Поскольку Oracle позволяет настроить так много настроек, есть много способов сделать их неправильными. Это приводит к бесконечным дискуссиям о разделении, типе используемого индекса и т.д. Во время этих обсуждений никто не думает о бизнес-проблемах.

Аналогия: у меня когда-то была камера олимпуса с хорошим объективом и некоторыми простыми настройками. Я сделал с ним хорошие снимки, поэтому я перешел на DSLR со всеми типами ручек и циферблатов. При этом мои фотографии не были наполовину хорошими, потому что я сосредоточился на камере, а не на предмете.

Это для меня разница между Sql и Oracle. Sql легче работать, и для этого больше делается. Идеи идут с доски на рабочий код намного быстрее. Только когда вы нажимаете на очень большие базы данных, которые Oracle может взять на себя, но я даже не уверен в этом. Дон, т-н, там что-то, что Oracle может обрабатывать, что SQL не может.

Изменить: Кроме того, Oracle очень плохо разбирается в анализе базы данных на больших объемах данных из-за переключение контекста в PL/SQL. Поэтому, если у вас есть несколько сложных функций, которые вы хотите запустить на своих данных, не используйте Oracle. MS SQL с другой стороны сияет в этой области, потому что она не страдает от этой проблемы, а также имеет интеграцию .Net.

Ответ 2

Я бы сказал:

  • Oracle имеет гораздо лучший процедурный язык. T-SQL чувствует себя только наполовину по сравнению с PL/SQL.
  • SQL Server имеет гораздо лучший оптимизатор. Когда я использовал Oracle, мне приходилось намекать на каждый запрос, чтобы убедиться, что он не навсегда заканчивается, SQL Server просто работает. Возможно, сервер плохо настроен, что приведет нас к следующему пункту.
  • С SQL-сервером работать намного проще. Вам нужны выделенные администраторы баз данных для администрирования Oracle, но в значительной степени любое bozo может поддерживать работу SQL-сервера.
  • Oracle имеет лучшую, более предсказуемую и более хорошо документированную модель concurrency.
  • Документация Oracle в большинстве случаев превосходит.
  • SQL-сервер лучше интегрируется с .NET(например, devil Linq2SQL).
  • Если вы используете Oracle, вам также нужно купить TOAD, но включенная Manegement Studio будет работать для SQL Server.
  • Oracle имеет более классные, но вряд ли необходимые функции, такие как расширяемое индексирование.

Если бы я выбрал, я бы пошел на SQL-сервер из-за лучшего оптимизатора. Тем не менее, я не чувствую себя в безопасности, когда несколько пользователей используют одни и те же строки на сервере SQL.

Ответ 3

В конечном счете, сейчас это не очень большая разница. Существует очень мало возможностей сделать то, что другой не может, но конфигурации из коробки, как правило, несколько отличаются.

Наиболее очевидным отличием является то, что Oracle использует ПОСЛЕДОВАТЕЛЬНОСТИ, и SQL Server использует столбцы с автоматическим увеличением. Для каждого есть плюсы и минусы. Некоторые предпочитают друг друга.

Из моего опыта, что запросы Top N в SQL Server кажутся немного проще, чем Oracle.

Из коробки Oracle использует MVCC (незафиксированные данные не блокируются для чтения другими транзакциями - база данных поддерживает согласованное представление). SQL Server, который я обнаружил недавно, имеет это тоже, но это не опция по умолчанию и называется чем-то совсем другим. Уровень изоляции транзакций или что-то в этом роде.

PL/SQL и T-SQL достаточно разные в синтаксисе в некоторых областях, но концепции в основном одинаковы.

Лично я обнаружил, что SQL Server Management Studio работает нормально, но ужасно в некоторых областях, например, импорт/экспорт данных только не работал с автоматическими добавочными первичными ключами. Это была известная ошибка, возвращающаяся на годы SQL Server 2005. Я не знаю, исправили ли они ее в 2008 году или нет. С PL/SQL Developer (не поставляется как часть Oracle, это отдельный коммерческий продукт) импорт и экспорт были легкими.

У Oracle есть досадный предел для VARCHAR (2) columsn: ограничен длиной до 4k. Они намного длиннее в SQL Server (64k?).

Я нашел модель безопасности SQL Server просто странной. TCP был отключен по умолчанию (только для проверки подлинности Windows), а затем вам нужно было установить логин и пользователя? Я так и не понял. Казалось, что это слишком сложно, тогда как в Oracle просто:

CREATE USER blah IDENTIFIED BY password;
GRANT CONNECT TO blah;

Готово (хотя предоставление некоторых других привилегий/ролей, таких как RESOURCE, довольно распространено).

Я никогда не разбирался в резервном копировании/восстановлении из управляющего tstudio. Recover не смог бы сказать, что кто-то был подключен к базе данных, но кто-то был мной, пытающимся запустить восстановление.

И прежде чем кто-нибудь поймет меня за вышеизложенное, я полностью понимаю, что многие из них проистекают из моего отсутствия опыта SQL Server, но, честно говоря, все еще уровень согласованности (с абстракцией) и переносимость концепций, которые ожидается.

Ответ 4

Я не знаю, справедливо ли это, но мой опыт работы с обоими:

  • Oracle кажется несколько более "мощным" с некоторыми отличными функциями, которые SQL Server еще не догнал.

  • SQL Server намного проще в работе и имеет гораздо лучшую интеграцию с продуктами microsoft (если вы работаете с .NET-разработкой).

Ответ 5

Я человек SQLServer и мало знаю об Oracle, но, на мой взгляд, SQLServer против Oracle является религиозным аргументом. Можно также спросить, что лучше Windows, Mac или Linux.

Оба SQLServer и Oracle являются базами данных, совместимыми с предприятиями, с впечатляющими историями разработчиков, операций и ИТ-поддержки. Оба могут обрабатывать любой набор данных, который вы хотите бросить на него при правильной настройке и правильном размере, и оба могут прийти к кричащей остановке при плохой настройке и размере.

Что касается "удобства использования", как я уже сказал, я парень SQLServer, и я нахожу SQLServer очень простым в использовании (admin). Конечно, я бы, скорее всего, нашел, что Oracle - это боль, потому что я думаю в SQLServer. Аналогичным образом, я уверен, что администраторы Oracle/dev находят Oracle простыми в использовании, потому что считают, что Oracle и SQLServer им странны.

Я думаю, что одно истинное различие между ними заключается в том, что Oracle - это кросс-платформа, а SQLServer - нет. Тем не менее, я не вижу в этом ничего общего, поскольку я не хочу заменять Windows на Linux.

Ответ 6

Я работал как с SQL Server, так и с Oracle по различным проектам. Мои мысли:

  • SQL Server работает лучше с .NET.
  • Как правило, SQL Server проще устанавливать и работать. Как разработчик, я редко нуждался в DBA для SQL Server, но всегда, похоже, сталкивался с чем-то с Oracle, что мне нужен DBA.
  • Я очень предпочел PL/SQL (Oracle) над T-SQL (SQL Server) для записи хранимых процедур
  • Oracle, похоже, имеет более значительные аппаратные требования.
  • Средства администрирования по умолчанию для SQL Server проще в использовании, чем те, которые включены в Oracle
  • Магазины разработки редко смешивают два

Ответ 7

Как упоминалось выше, у Oracle есть принципиально другая структура блокировки для SQL Server: "писатели не блокируют читателей, а читатели не блокируют писателей", как Том Ките (его сайт - фантастический бесплатный ресурс). Нечто похожее было встроено в SQL Server 2005, но оно было выполнено таким образом, что управление версиями строк было реализовано в tempdb, что не кажется особенно масштабируемым. И он отключен по умолчанию, поэтому люди в Microsoft, похоже, не очень убеждены в этом.

Oracle также имеет очень разную структуру кэширования запросов, так что использование связанных переменных или заполнителей может иметь огромное значение: "жесткий" синтаксический анализ (т.е. база данных, проверяющая синтаксис SQL, как будто это первый раз видел его) можно свести к минимуму, означая только "мягкий" синтаксический анализ (заполнение переменных). Начиная с 10-го года существует также привязка "peeking", так что вы можете использовать переменные bind, не находясь во власти перекошенных данных.

Кроме того, есть такие вещи, как действительно эффективная и оптимизированная функция полнотекстового поиска и управление версиями на уровне строк.

Ответ 8

Последние версии SQL Server и Oracle являются готовыми к Enterprise и в значительной степени похожи на то, что они могут сделать.

Очевидно, что они не работают одинаково, но в целом то, что вы можете достичь в обоих, примерно эквивалентно производительности и функциональности.

Если вы хотите, чтобы многие ссылки на статьи выполняли поиск в google: SQL vrs Oracle

Сказав, что я уверен, что существуют различия в соглашениях о лицензировании и поддержке.

Для меня лично у нас есть Oracle и SQL Server, где я работал в прошлом, и сравнивая эти два, я не вижу ничего в Oracle, чего я не мог бы сделать в SQL Server (одна из моих ролей была SQL Server DBA.).
Я уверен, что Oracle DBA чувствовал то же самое. У нас было 10 SQL Server и баз данных, а базы данных варьировались от крошечных до сотен ГБ. У Oracle было несколько серверов и баз данных, и они были большими.

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

Мое лучшее предположение о значении я и g (не глядя на них).
Было бы, я готов к интернету, g - сетка.

Вот некоторая информация о SQL Server 2010: Microsoft излагает дорожную карту SQL Server

Здесь сравнение Microsoft с Oracle: Больше производительности | Более масштабируемые | Больше значения

Здесь сравнение Oracle с Microsoft: Oracle (r) Database 10g Release 2 превосходит Microsoft SQL Server 2005 в сравнении "голова к голове"

Ответ 9

Я считаю, что существует длинный список функций, которые Oracle имеет с SQL Server. Это не значит, что вы не можете выполнить одну и ту же задачу в MSSS, нет, но эти функции означают, что Oracle может быть быстрее для одной и той же вещи

Таблица кластеров.

Мы можем хранить данные из нескольких таблиц на одном блоке/странице. Возьмем, к примеру, системные таблицы, содержащие таблицы, столбцы, индексы и ограничения. Если у вас нет табличных кластеров, чтобы извлечь таблицу, все ее столбцы, индексы и ограничения, вы запросите индекс имени родительской таблицы, затем перейдите в родительскую таблицу, прочитайте страницу/блок с этой строкой. Затем получим PK, возьмите это значение в индекс на FK в таблице столбцов, получите rowid, перейдите к блокам/страницам с этими строками, повторите для двух других таблиц. Ух... это много работы.

В Oracle вы можете указать, что эти четыре таблицы будут жить в одном и том же кластере таблиц на основе таблицы_PK. Таким образом, чтение будет выглядеть. Проверьте индекс кластера для размещения этой таблицы и возьмите все данные из четырех таблиц с одним или несколькими блоками. Вуаля.

В обеих системах это 4 таблицы, они выглядели бы точно одинаково для приложения, но если бы минимизация времени чтения была критической, Oracle могла бы сделать это быстрее.

Ответ 10

Я разработчик программного обеспечения. Я в первую очередь пишу программное обеспечение поверх баз данных (или помогаю моей команде сделать это, по крайней мере).

Это то, что я могу сказать о Oracle: каждый раз, когда я хочу что-то сделать, он совершенно отличается от всего, что я сделал. Я потратил много времени на поиск своего рода полезного объяснения загадочного сообщения об ошибке, чтобы найти несколько сообщений, предполагающих, что OP-контакт Oracle поддерживает. Я только что обнаружил, что их инструмент импорта данных насоса дает ошибки (которые были довольно загадочными), если у вас есть ограничение NOT NULL на пространственный столбец в Oracle 10g. Даже после устранения ограничения у меня возникает проблема, когда импорт висит, ничего не делая. Говоря о насосе данных, он работает только локально. Инструменты импорта/экспорта, которые работают с удаленными машинами, устарели. Когда у вас есть ошибка в вашей процедуре, она сообщает вам, что она не скомпилирована, но в любом случае создает объект процедуры в непригодном для использования состоянии. Затем вам нужно запустить команду, чтобы получить ошибки. Система пользователей и разрешений оставляет желать лучшего. Пользователь представляет собой схему в Oracle, но при всем огромном количестве разрешений нет разрешения разрешать пользователю получать доступ ко всем объектам схемы и разрешать пользователю убивать сеанс, требуя предоставления разрешения ALTER DATABASE (которое дает пользователь, вероятно, гораздо больше энергии, чем вы хотите). Для пространственных наркоманов он не может разобрать WKT, который он генерирует для SRID 3857 (он выплескивает числа формы 0,00000e6, когда координаты становятся достаточно большими и не могут разобрать этот численный синтаксис). Да, многие из них являются конкретными примерами, но сталкиваются с такими проблемами, в которых я не могу просто делать то, что я хочу сделать, - это ежедневный опыт для меня, при этом во время одной задачи возникает несколько проблем.

У меня был только ограниченный опыт работы с SQL Server, но то, что я сделал, не было таким грубым для меня. Я смог разобраться с вещами с гораздо большей легкостью, и я не помню, чтобы сообщения об ошибках не помогали мне разобраться в моих проблемах. Мои коллеги, которые более активно работали с SQL Server, сообщили о подобном опыте.

Возможно, это только я, но работа с Oracle кажется постоянно болезненным, утомительным процессом поиска странных ошибок и попытки обойти тот факт, что мне не хватает функциональности, и я оставил для себя возможность реализовать себя (например, увеличивающие ключи). Мое нижестоящее мнение таково: возможно, Oracle может работать лучше, но только если у вас есть время и деньги, чтобы заставить Oracle работать, а затем выяснить, как настроить его и деньги, чтобы ваши разработчики тоже учились. Oracle просто трудно изучить и использовать.

Ответ 11

Преимущество Oracle - это настраиваемый аспект, в Oracle вы можете в значительной степени изменить все... Я не знаю, получаете ли вы такой уровень настройки в SQL Server.

На стороне инструментов SQL Server светит, его очень легко работать (имеет ограничения, но все же очень легко).

Интеграция... ну, это зависит, если вы используете .NET тогда SQL Server (даже если вы можете использовать Oracle вместе с ним), если вы используете Java, а затем Oracle (вы также можете подключиться к SQL Server с помощью Java).

Если вы спросите меня, какой из них выбрать, я скажу NONE!, так как вы получаете почти такое же качество и передовые технологии с бесплатными серверами баз данных, такими как MySQL или PostgreSQL (и поскольку я использую Python/Django и .NET, они очень хорошо интегрируются).

Кого выбрать? Я не знаю, попробуйте оба!, Вам не потребуется больше дня, чтобы установить и поиграть с ними:). У обоих есть преимущества, и оба они классные, мы дошли до того, что неважно, какую СУБД вы выбираете (4 больших, MySQL, PgSQL, MSSQL или Oracle).

Ответ 12

Как конечный пользователь (не ИТ), у меня есть склонность (и смещение) к Oracle. Я работаю в Oracle уже три года и теперь попал в мир MSSS. Лично я считаю среду SQL Server менее интуитивной и очень "багги". Я не пишу код, но мне нужно запросить большие наборы данных и найти его (OSD) более масштабируемым.