Самая большая проблема, которую я видел, это отсутствие стандартизации. В мире СУБД вы можете продвинуться довольно далеко с любой случайной базой данных, если знаете SQL. Они в основном все это реализуют, с небольшими вариациями. Я не знаю ни одной существующей СУБД, которая не выполняет SQL: вы можете почти взаимозаменяемо использовать «СУБД» и «SQL».
Ближе всего к ООСУБД, пожалуй, OQL, который потерпел полный провал.
Ни одна база данных никогда не реализовывала многое из этого. Пару лет назад я использовал довольно хорошую коммерческую ООСУБД, но (по состоянию на 2007 год или около того, и это было в основной версии 8 или 9) она даже не поддерживала запрос объекта по его имени. В руководстве просто говорилось, что до этой части OQL они еще не дошли. (Я не уверен, но вы, возможно, смогли бы сделать это в собственном вызове.)
Большинство объектных баз данных, которые я недавно видел, имеют интерфейсы на родном языке, а не язык запросов, такой как OQL. Система, которую я использовал, например, поддерживала (только!) Perl и VB, IIRC. Ограничение вашей аудитории всего парой языков (или принуждение их к написанию оберток, как это сделали мы) — не способ завоевать друзей.
Из-за этого нет конкуренции и, следовательно, нет простого резервного плана. Если вы поместили свои данные в MS-SQL, а Microsoft прекратила его поддержку, вы, вероятно, сможете сбросить свои данные в Postgres и перенести свои запросы без особых проблем. (Это может быть много работы, если у вас много запросов, но я не сомневаюсь, что вы справитесь. Это больно, но технически не сложно.) Или Oracle, или MySQL, или многие другие, как коммерческие и бесплатно.
С ООСУБД такого не происходит: если та, которую вы используете, развалится, или они поведут ее в направлении, которое вам не нужно, или вы обнаружите, что в ней отсутствует ключевая функция, которая вам нужна, вы не можете просто сбросить ее. ваши данные в конкурирующую ООСУБД и портировать ваши запросы. Вместо этого вы говорите об изменении базовой библиотеки и внесении масштабных изменений в архитектуру. Так что на самом деле вы ограничены коммерческой ООСУБД, которой вы действительно доверяете (можете ли вы назвать хотя бы одну?), или ООСУБД с открытым исходным кодом, которую вы доверяете своей команде поддерживать, когда что-то пойдет не так.
Если это звучит как FUD, извините, я не хотел этого. Но я был там, и с точки зрения управления проектами я бы не решился вернуться, даже несмотря на то, что среда программирования может быть прекрасной. Другой способ думать об этом таков: посмотрите, насколько сегодня популярно функциональное программирование, несмотря на то, насколько это хорошая идея. ООСУБД похожи, но хуже, поскольку это не просто ваш код, а ваш код и ваши данные. Я бы с радостью начал сегодня крупный проект на Erlang, но я все еще не решился бы использовать ООСУБД.
Поставщики ООСУБД: чтобы изменить это, вам нужно упростить переход от вас к конкурентам . Вы можете найти OQL и реализовать это на самом деле или сделать это на уровне API, например, ODBC или что-то в этом роде. Даже стандартный формат дампа (с использованием JSON?) и инструменты для импорта/экспорта в/из него для нескольких ООСУБД были бы отличным началом.
person
Ken
schedule
14.11.2009