Мы находимся на ранних стадиях разработки приложения большого бизнеса, которое будет иметь несколько модулей. Одним из требований является то, что приложение должно быть независимым от базы данных, оно должно поддерживать SQL Server, Oracle, MySQL и DB2.Независимость от базы данных
Из-за того, что я читал в Интернете, независимость базы данных - очень плохая идея: это приведет к трудноподдерживающемуся коду, дизайну базы данных с наименее распространенными функциями во всех поддерживаемых СУБД, плохой производительности и плохим масштабируемость. Мое личное чувство - это то, что сложность этой функции, более чем любая другая функция, может увеличить затраты и время разработки по экспоненте. Код будет ужасным.
Но я не могу убедить кого-либо игнорировать эту функцию. Проблема заключается в том, что большинство данных по этой проблеме являются эмпирическими данными, не имеющими числа для поддержки дела. Если кто-то может поделиться любыми поддерживаемыми цифрами данными по этой проблеме, я был бы признателен.
Одним из возможных вариантов дизайна является использование инфраструктуры Entity для уровня базы данных с провайдером для каждой СУБД. Мое личное чувство заключается в том, что запись инструкций SQL вручную без ORM была бы «обязательной», поскольку у вас нет контроля над SQL, сгенерированным инфраструктурой сущности, и для независимого от базы данных сценария потребуется некоторая настройка SQL на основе СУБД, код которой таргетинга, и я думаю, что сторонние поставщики инфраструктуры сущностей будут иметь значительное количество ошибок, которые появляются только в сложных сценариях, которые будут иметь приложения. Я хотел бы услышать от всех, кто ранее имел опыт использования структуры сущностей для независимого от базы данных сценария.
Кроме того, одна из возможностей, обсуждаемых командой, заключается в поддержке одной СУБД (например, SQL Server) на первой итерации, а затем добавлении поддержки других СУБД в последовательные итерации. Я думаю, что, поскольку нам понадобится дизайн базы данных с наименее распространенными функциями, эта стратегия разработки плохая, так как нам нужно знать все функции всех баз данных, прежде чем мы начнем писать код для первой СУБД. Мне также нужно услышать от вас эту возможность.
«писать SQL заявления вручную без каких-либо ОРМ бы необходимо, так как ... для независимого от базы данных сценария потребуется некоторая настройка sql. " Au contraire, это именно то, что ORM сделает для вас, если ваши запросы не будут сложными. Хорошая ORM будет генерировать соответствующий SQL для любой базы данных, на которую он нацеливается, без необходимости настройки. И если у вас есть сложные проблемы, почему бы просто не проверить некоторые из них с помощью необходимых поставщиков EF? Дайте им попробовать, а не просто «хорошо, у них обязательно будут ошибки, ну, вернемся к ручному SQL»! – itowlson