postgreSQL mysql oracle различия

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

кто-нибудь может объяснить в чем плюсы и минусы каждого из этих трех двигателей? Мы должны выбрать один из них, и единственное, что я действительно знаю о них, это:

  • Mysql & Postgres:
    • свободны, но не так хороши, как oracle
    • Mysql как проблемы безопасности (это правда?)
  • Oracle:
    • лучший движок базы данных в мире
    • дорого

может кто-то очистить другие различия между ними? Это средний/большой (мы думаем примерно от 100 до 200 таблиц) проект с низким бюджетом, что бы вы выбрали? А с более высоким бюджетом?

4 ответов


несколько лет назад мне пришлось написать механизм перевода; вы кормите его одним набором sql, и он переводится на диалект текущего подключенного двигателя. Мой движок работает на Postgres (он же PostgreSql), Ingres, DB2, Informix, Sybase и Oracle - oh и муравьях. Честно говоря, Oracle-мой наименее любимый (подробнее об этом ниже)... К сожалению для вас, mySql и SQL Server Нет в списке (в то время ни одна не считалась серьезной СУБД - но времена меняются).

без учета качество или производительность двигателя и простоты создания и восстановления резервных копий - вот основные различия:

  • ссылке
  • ограничения
  • инвалидов
  • зарезервированные слова
  • null-семантика (см. ниже)
  • семантика цитаты (одинарная цитата ', двойная цитата ", или любой)
  • семантика завершения оператора
  • семантика функции
  • обработка даты (включая константу ключевые слова, такие как "сейчас" и форматы функций ввода / вывода)
  • разрешены ли встроенные комментарии
  • максимальная длина атрибута
  • максимальное количество атрибутов
  • семантика соединения / парадигма безопасности.

не утомляя вас на всех данных преобразования, вот образец для одного типа данных, lvarchar:

оракул=тип varchar(%х) и Sybase=текст для DB2="длинного varchar" СУБД Informix=lvarchar Постгреса=тип varchar(%х) муравьи=тип varchar(%х) ingres=varchar (%x,%y)

самая большая сделка, на мой взгляд, - это обработка null; Oracle молча преобразует пустые входные строки в нулевые значения. ...Где-то, давным-давно, я прочитал запись, которую кто-то сделал о "семнадцати значениях Null" или что-то в этом роде, и суть в том, что нули очень ценны, а различие между нулевой строкой и пустой строкой полезно и нетривиально! Я думаю, что Oracle сделала огромную ошибку на этом; никто из других не имеет такого поведения (что я видел).

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

далеко и далеко мой любимый Postgres; это очень быстро в _real_world_ ситуациях, имеет большую поддержку, и с открытым исходным кодом / бесплатно.


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

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

сравнение von MYSQL и Postgres можно найти здесь

обратите внимание, что Oracle предлагает также Express (XE) edition, уменьшенный в характеристиках, но свободный использовать. Кроме того, если у вас мало знаний для начала, вам придется учиться самому, я бы просто выбрал любой и начал учиться, используя его.


см. таблицы сравнения в Википедии: http://en.wikipedia.org/wiki/Comparison_of_object-relational_database_management_systems && http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

Oracle может быть или не быть лучшим. Это дорого, но это не значит лучший.

вы смотрели DB2? В Sybase? Компании Teradata? MS SQL?


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

вы можете взглянуть на http://www.mysqlperformanceblog.com/ (и их превосходная книга), чтобы увидеть, как MySQL может обрабатывать огромные развертывания.

вообще в настоящее время большинство RDBMSes может сделать почти все, что вам нужно в очень серьезном приложение.