Получение данных из нескольких баз данных - PullRequest
0 голосов
/ 08 января 2011

Я работаю над приложением, которое должно взаимодействовать с множеством разных приложений, работающих на разных платформах баз данных. Я буду знать схему таблицы до выполнения, но не буду знать платформу базы данных (MS SQL 200X, Oracle 9i, 10g и т. Д., MySQL 4.0.1, 5.x и т. Д., Sybase и т. Д.) До времени выполнения.

Насколько я понимаю, каждая из этих систем имеет немного разные диалекты. Нужно ли использовать nhibernate для обработки различий при подключении к этим системам или я могу использовать ADO.NET и передавать необработанные строки SQL (выбрать * из таблицы)?

Ответы [ 2 ]

2 голосов
/ 08 января 2011

Если вам нужно использовать только операторы ANSI SQL, которые должны быть реализованы всеми базами данных, тогда да, вы можете просто использовать ADO.NET.

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

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

1 голос
/ 08 января 2011

SQL должен быть стандартизирован для всех БД, но они не все используют один и тот же синтаксис, так что это действительно зависит от того, какой SQL вы вызываете.Например, SQL Server использует TOP, а Oracle использует rownum.Даже если они все DDL, некоторые синтаксические различия между СУБД могут быть проблемой.

Если выбрать * из таблицы - это все, что вам нужно, тогда не должно быть проблем, кроме скачков производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...