Какой самый большой недостаток <вашей любимой базы данных>?
У всех нас есть наша любимая база данных. Если вы объективно посмотрите на выбранную вами базу данных, какие у нее недостатки и что можно улучшить?
Правила:
- Один ответ за недостаток с;
- краткое описание ограничения с последующим;
более подробное описание, объяснение того, как это можно сделать лучше, или пример другой технологии, которая не имеет такого же ограничения.
Не уничтожайте базы данных, которые вы не использовали широко. Легко делать удары по другим технологиям, но мы хотим учиться на вашем опыте, а не на ваших предубеждениях.
20 ответов
Базы данных Oracle довольно дороги
Oracle делает то, что делает хорошо, но затраты на лицензирование ужасны. Это улучшилось с выпуском Oracle XE, но его ограничения означают, что это ограничение роста для вашего решения.
Мне нравится гибкость последовательностей в Oracle по сравнению с другими автоинкрементами баз данных, но невозможность установить seq.nextval в качестве значения по умолчанию для столбца pk несколько раздражает, и исправлять это нужно тривиально.
База данных PostgreSQL
Дефект No SQL Profiler
Мы спросили разработчиков об этом на недавней конференции, и я понимаю, что теперь они хотят это реализовать.
База данных Microsoft SQL Server 2005
Отсутствиедефекта "ВСТАВИТЬ ИЛИ ОБНОВИТЬ"
Описание
Часто вам нужно либо вставить, либо обновить запись в таблице, в зависимости от того, присутствует запись или нет. Отсутствие атомарной операции приводит к ненужным транзакциям.
Этого не происходит с MySQL или SQLServer 2008.
База данных: Oracle
Проблема: имена таблиц, процедур, столбцов и т. Д. Не могут превышать 30 символов. Это бесит.
Проблема: это соответствие JDBC slapdash. Например, хранимые процедуры не возвращают наборы результатов в JDBC-совместимом виде, а вместо запатентованного типа параметра OUT. Это означает, что вы не можете использовать абстракции JDBC более высокого уровня.
База данных MySQL 5.0.x и выше
Ошибки репликациидефектного кольца приводят к несогласованности данных на разных узлах
Описание
Самая серьезная проблема в производстве, с которой мы сталкиваемся на данный момент, заключается в том, что в кольце MySQL само кольцо выдает ошибку и прекращает репликацию.
Построение кольца (или Master-Master-репликация) возможно с 5.xx: базы данных объединяются в "кольцо", чтобы реплицировать данные друг с другом. Каждый узел базы данных получает все изменения от всех других узлов.
Мы предполагаем, что ошибка заключается в автоинкрементах-сбоях. Это также известно из обычной репликации, но в новой версии нет сообщений об ошибках sufficinet в журнале ошибок. Я настоятельно рекомендую не использовать эту функцию в MySQL, пока проблемы здесь не устранены.
База данных Microsoft SQL Server
Дефект Огромная стоимость лицензирования
Описание
SQL Server обладает отличными возможностями и очень хорошо интегрируется с разработкой.NET. Проблема в том, что, когда вам нужно масштабироваться от общей базы данных до выделенной базы данных, затраты на лицензирование действительно высоки. По сути, это приводит к тому, что базы данных, которые действительно должны работать на выделенном сервере, размещаются на общих серверах с проблемами производительности и безопасности.
Этого не происходит с MySQL или PostgreSQL.
База данных Oracle
Дефект Не слишком хорошо обрабатывает длинный тип данных
Описание
У Oracle был только длинный тип данных до 9i (я полагаю), в этот момент он был объявлен устаревшим в пользу LOB. Однако существует тонна кода, которая все еще имеет длинные и все связанные ограничения. Самым большим из них было то, что в каждой таблице мог быть только один длинный столбец, и он должен быть в конце столбцов. Смотрите здесь для более исчерпывающего списка ограничений на длинный.
База данных MySQL
Дефект- сервер запустится с поврежденными таблицами
Описание
Если MySQL имеет поврежденную таблицу - либо из-за того, что она была уничтожена во время записи, либо из-за какого-либо другого сбоя, - он вполне благополучно запустится и позволит пользователю продолжить работу, как будто проблемы не существует. Конечно, это приведет к появлению некоторых сообщений об ошибках в журнале, но из моего опыта это не помогает, когда вы пытаетесь выяснить, почему приложение ведет себя странно.
Большинство других баз данных обнаружат и исправят ошибку при запуске или просто откажутся начинать с любым видом повреждения.
База данных Microsoft SQL Server 2005
Дефект Плохо реализованный интерфейс
Описание
Студия управления SQL Server не предлагает отличного пользовательского интерфейса:
- Поведение табуляции странное: вы всегда ищете нужную вкладку
- Сохраняет сбой на 64-битных версиях
- Отсутствуют некоторые функции предыдущей версии, такие как обзор грантов хранимых процедур
Это не происходит с версией 2000.
База данных Oracle
Проблема Определения таблицы Temp не являются частными
Описание Многие базы данных (например, Postgres и Sybase) позволяют создавать временные таблицы на лету, вставлять в них, добавлять индексы, если вы хотите, а затем запрашивать их. В Oracle есть временные таблицы, но определения временных таблиц существуют в глобальном пространстве имен. Поэтому временная таблица должна быть создана администратором базы данных, вам нужно синхронизировать между определением таблицы, которое они использовали, и вашим кодом, и если два куска кода хотят похожих (но не идентичных) определений таблицы, им нужно использовать разные имена. Эти различия делают временные таблицы гораздо менее удобными для разработчиков.
Да, я понимаю преимущества оптимизатора запросов от наличия глобальных определений. Однако для меня отсутствие удобства делает временные таблицы Oracle практически бесполезными для меня, в то время как я очень интенсивно их использую в Postgres.
База данных MySQL
Внешние ключи дефекта поддерживаются только в некоторых типах таблиц
Описание
Достаточно сказано. Это имеет очевидные последствия для обслуживания.
Из руководства MySQL
На определения внешних ключей распространяются следующие условия:
- Обе таблицы должны быть таблицами InnoDB, и они не должны быть временными таблицами.
И здесь:
Для механизмов хранения, отличных от InnoDB, MySQL Server анализирует синтаксис FOREIGN KEY в инструкциях CREATE TABLE, но не использует и не сохраняет его.
Этого не происходит ни с какой другой крупной БД.
База данных Oracle
Дефект Зернистость грантов на пакеты
Описание
Вы можете предоставлять разрешения только для пакетов, но не для хранимых процедур внутри пакетов. Или, в качестве альтернативы, вы можете предоставлять разрешения для отдельных хранимых процедур, но затем размещать их вне пакетов. Это требует, чтобы вы знали заранее, кто будет использовать какую хранимую процедуру, и это действительно трудно реорганизовать.
Это не происходит с SQL Server.
База данных: Sql Compact Edition
Недостаток: хранимые процедуры не поддерживаются.
Независимо от этого ограничения, эта БД имеет свои особенности, особенно в качестве клиентского кэша для приложения, которое может быть интеллектуальным клиентом или распространяться на мобильные платформы.
PostgreSQL не имеет хорошего решения для отработки отказа, но я понимаю, что они работают над этим.
База данных: PostgreSQL
** Проблема: ** в том, что разъем для C#, например, не очень актуален и дает сбой с расширенной функцией.
Любая СУБД SQL
Дефект: повторяющиеся строки
Одним из достоинств реляционной модели является то, что она представляет все без дубликатов кортежей, то есть использует отношения, которые имеют ключи и не имеют дубликатов. К сожалению, SQL не построен таким образом. Это делает жизнь разработчика базы данных излишне сложной. Разработчикам SQL приходится иметь дело с таблицами без ключей и отлаживать запросы, которые возвращают повторяющиеся строки.
База данных: все
Недостаток - плохой дизайн людей, которые не думали, что важно знать, что вы делаете, когда разрабатываете базу данных. Гораздо больше проблем, вызванных плохим дизайном во всех базах данных, чем отсутствующими функциями. Поэтому я полагаю, что все они упускают возможность "прочитай мои мысли и найди лучшее решение без необходимости думать".
База данных Microsoft SQL Server 2005
Дефект Отсутствие параметров типа массива
Описание
Полезно при поиске, во многих случаях вам нужно передать ряд значений для сопоставления. В SQL 2005 вы можете обойти эту проблему, используя CLR внутри SQLServer. Учитывая полезность, было бы больше смысла иметь эту функцию из коробки.
Этого не происходит с SQL Server 2008 или Oracle.
База данных Postgres
Дефект Нет аналитических запросов
Описание
Аналитические запросы, представленные Oracle, являются частью стандарта SQL 2003. К сожалению, Postgres еще не реализовал их.