Когда выбрать Oracle over MySQL? [закрытый]

Я думаю NUnit , Ваш лучший выбор. С TestDriven.NET, Вы получаете большую интеграцию в VS.NET. (Resharper также имеет бегуна модульного теста при использовании его). NUnit это простой использовать и следует за установленной парадигмой. Вы также найдете много проектов/учебных руководств/руководств с помощью него, который всегда помогает.

Вашим другим основным выбором является, вероятно, MBUnit, который является самой все большей позицией как BDD предпочтительная платформа (в сочетании с Галлио http://www.gallio.org ).

12
задан Sabeen Malik 24 November 2009 в 09:17
поделиться

8 ответов

Есть некоторые вещи, которые беспокоят меня с Mysql

. Мне приходится выбирать между принудительным соблюдением ограничений и транзакциями или полнотекстовым индексом (InnoDb против MyISAM). Это действительно проблема номер 1 для меня (соблюдение ограничений и транзакций - вот что делает dbs крутым, но вам также нужен полнотекстовый поиск ...)

  • Нелегко «смоделировать» транзакции в клиентском коде.
  • Если вы не применяете ограничения, очень легко получить несогласованное состояние db
  • . Без полнотекстового поиска вы можете сходить с ума с OR X LIKE% y%
  • . Вам нужно создать ТРИГГЕР ПЕРЕД ОБНОВЛЕНИЕМ с RAISE ERROR для ПРОВЕРИТЬ ОГРАНИЧЕНИЕ
  • Mysql имеет плохую производительность, когда данные становятся слишком большими (я имею в виду действительно большими).
  • Mysql создает плохие планы выполнения
  • Mysql имеет проблемы с более чем 3 соединениями (let ' лучше сказать несколько соединений).

Oracle - это решение всех этих проблем, это полноценная СУБД (транзакции, ограничения CHECK, множество опций для представлений, полнотекстовый поиск и многое другое ..), но в конце концов это так. вопрос денег.

12
ответ дан 2 December 2019 в 04:53
поделиться

Аналитика ... делать вам нужны другие причины? ;)

Аналитика - благо для всех отчетов и хранилищ данных. Но тогда, если вам просто нужна небольшая база данных для веб-сайта, придерживайтесь MySQL, в противном случае, если вам нужна сложная отчетность и производительность является проблемой, тогда я считаю, что Oracle - это то, что вам нужно.

4
ответ дан 2 December 2019 в 04:53
поделиться

Возможно, стоит подумать о postgresql, который также является бесплатным (BSD вместо gpl).

Для хорошего обзора вариантов взгляните на Википедию, используя « Сравнение систем управления реляционными базами данных ».

5
ответ дан 2 December 2019 в 04:53
поделиться

Я сам работаю с Oracle, но иногда мне трудно оспорить его использование в PostgeSQL или даже MySQL.
Вкратце, есть компании / проекты, которые управляют огромными объемами данных с помощью некоторых СУБД с открытым исходным кодом.

Если вы хотите перейти к функциям, это другое дело, но как вы можете спорить с успехом эти компании? Правда, для этого используют много коробок, но все равно намного дешевле. Я сомневаюсь, что большинству компаний, использующих Oracle в настоящее время, он действительно нужен, но, безусловно, есть компании, которым нужен Oracle.

Хорошая цитата:

«Перемещение работы с интенсивным использованием ЦП перенесено из уровень базы данных для приложений уровень приложений: ссылочный целостность, объединение, сортировка в прикладной уровень! Рассуждение: приложение серверы дешевые, базы данных узкое место ».

См. здесь , где можно найти множество примеров из реальной жизни. И да, они используют Oracle.

И да, я все еще люблю Oracle, это то, как должна выглядеть правильно сделанная СУБД, но это не означает, что его место повсюду, по крайней мере, не по той цене, по которой он продается.

5
ответ дан 2 December 2019 в 04:53
поделиться

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

http://www.oracle .com / database / product_editions.html

Flashback-запрос является бесплатным включением и позволяет запрашивать базу данных "по состоянию на" некоторое время в недавнем прошлом.

Фильтры выражений - еще один хороший пример халявы, а Механизм правил также очень мощный. http://www.oracle.com/technology/products/database/rules_manager/index.html

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

1
ответ дан 2 December 2019 в 04:53
поделиться

Я ничего не знаю об Oracle, но поскольку вопрос был расширен, чтобы включить, скажем, Postgres ...

Некоторые вещи, которые я лично использовал или видел в Postgres, которые не используются действительно существуют в MySQL (AFAICT)!

  • транзакции и полнотекстовый поиск вместе

Я знаю, что популярно использовать внешний FTS, поскольку в MySQL его нет. Лично у меня не было ничего, кроме проблем с использованием отдельных решений FTS: если два источника данных могут рассинхронизироваться, я могу гарантировать, что в какой-то момент это произойдет. Я мог бы использовать BDB и писать свои собственные индексы, но я этого не делаю, потому что я не вижу способа, в котором он лучше, чем встроенный индекс, и множество способов, в которых он хуже. (Хорошо, в одном случае мне понадобился странный настраиваемый индекс, и для этого он хорош. Если вам нужен странный настраиваемый FTS, тогда, возможно, Sphinx более гибкий. Но я никогда не видел реальной необходимости в необычной пользовательской FTS, и я даже не уверен, что Sphinx более гибкий, чем Postgres FTS.)

  • пространственные запросы (PostGIS)

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

  • объектно-реляционные таблицы

Люди, занимающиеся Rails (эй, я был одним из них!), Особенно любят использовать STI и делают вид, что все подклассы имеют почти те же поля, что и суперкласс. Это' OK Хорошо, если у вас всего пара подклассов или все они очень похожи, но попытка сопоставить иерархию классов с таблицами может довольно быстро стать безумной. В Postgres это просто: создать новую таблицу, унаследованную от первой, и добавить свои поля, точно так же, как создание подклассов в вашем языке программирования. Модель данных, которая действительно соответствует моим данным! Не так хорошо, как настоящая OODB, но чертовски близко.

  • лучшие транзакции

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

(Общая тема, которую я здесь вижу, - это способность говорить именно то, что я имею в виду, и, следовательно, работать на более высоком уровне абстракции. Хотите FTS на моих данных? Затем создайте индекс FTS . Хотите пространственный запрос? Затем напишите пространственный запрос. Хотите сохранить данные подкласса? Затем создайте таблицу подкласса. Хотите полностью атомарную миграцию? Затем сделайте транзакцию вокруг нее и завершите ее. Конечно, я могу реализовать любую из это в MySQL, но тогда я m нужно думать, реализовывать и поддерживать эту другую вещь , а не просто писать одну строку SQL. Для меня как профессионального программиста нет ничего более ценного, чем возможность работать на более высоком уровне абстракции, точка полной остановки.)

Я не уверен, что Postgres в целом «лучше» MySQL - - конечно, есть вещи, которые MySQL делает намного лучше, и поэтому он определенно находит свое применение - но это несколько вещей, которые мне в нем очень нравятся.

2
ответ дан 2 December 2019 в 04:53
поделиться

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

Он предлагает множество встроенных аналитических и статистических функций in для агрегирования и обобщения данных. Вы можете делать это с помощью mySQL, но в своем приложении.

У него отличная масштабируемость, если вам нужно запустить большую транзакционную систему с транзакционной целостностью (фиксация / откат). Если вы готовы потратить много денег, он масштабируется с помощью Real Application Clusters.

Он предлагает схемы для обработки встроенного кода (пакеты, хранимые процедуры, хранимые функции), которые хорошо масштабируются для больших объемов кода и сложных схемы.

Он хорошо справляется с высокими скоростями транзакций (десятки тысяч в час), особенно при использовании запросов связанных переменных (объекты PreparedStatement в JDBC). Что наиболее важно, его производительность для такого рода вещей предсказуема.

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

Вы можете оценить это с помощью Express Edition (бесплатно, ограничено парой гигабайт данных).

Если ваша система может работать с Oracle Standard Edition, используйте вместо этого mySQL. Если вашей системе требуются функции Enterprise Edition, вам также следует оценить IBM DB2, поскольку обе они предназначены для масштабирования.

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

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

Вы можете оценить это с помощью Express Edition (бесплатно, ограничено парой гигабайт данных).

Если ваша система может работать с Oracle Standard Edition, используйте вместо этого mySQL. Если вашей системе требуются функции Enterprise Edition, вам также следует оценить IBM DB2, поскольку обе они предназначены для масштабирования.

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

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

Вы можете оценить это с помощью Express Edition (бесплатно, ограничено парой гигабайт данных).

Если ваша система может работать с Oracle Standard Edition, используйте вместо этого mySQL. Если вашей системе требуются функции Enterprise Edition, вам также следует оценить IBM DB2, поскольку обе они предназначены для масштабирования.

Место, где я работаю, тратит деньги на службу под названием Pythian Group, чтобы заботиться о нашем Oracle, и это хороший способ.

Вы можете оценить это с помощью Express Edition (бесплатно, ограничено парой гигабайт данных).

Если ваша система может работать с Oracle Standard Edition, используйте вместо этого mySQL. Если вашей системе требуются функции Enterprise Edition, вам также следует оценить IBM DB2, поскольку обе они предназначены для масштабирования.

Место, где я работаю, тратит деньги на службу под названием Pythian Group, чтобы заботиться о нашем Oracle, и это хороший способ.

Вы можете оценить это с помощью Express Edition (бесплатно, ограничено парой гигабайт данных).

Если ваша система может работать с Oracle Standard Edition, используйте вместо этого mySQL. Если вашей системе требуются функции Enterprise Edition, вам также следует оценить IBM DB2, поскольку обе они предназначены для масштабирования.

1
ответ дан 2 December 2019 в 04:53
поделиться

Есть множество вещей, которые Oracle делает очень хорошо, возможно, лучше, чем любые другие rdbms (я недостаточно хорошо знаю DB2, чтобы оставить это без внимания). Кластеризация (RAC) очень и очень хороша. Язык хранимых процедур, PL / SQL, очень надежен и на самом деле приятен для программирования. Имеются хорошие функциональные возможности XML, ГИС, полнотекстовый код и т. Д.

Но абсолютным препятствием для меня является то, что оптимизатор работает хорошо. Вы даете ему запрос, и он эффективно возвращает вам набор результатов. Иногда вы знаете какую-то деталь, которой нет, и вам нужно дать подсказку, но это редкое исключение. Вы вводите операторы SELECT, INSERT, UPDATE и DELETE, и база данных работает должным образом.

1
ответ дан 2 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: