Есть несколько проблем, с которыми я столкнулся при работе с базами данных, предназначенными для использования нескольких бэкэндов.
Во-первых, типы данных различны и имеют разные способы обработки данных. Это особенно сложно при обработке дат и больших объемов текста.
Следующее, что я заметил, это то, что, поскольку они пытаются использовать стандарт SQL ANSII, возникают проблемы, когда база данных не полностью поддерживает стандарт. Еще более серьезной проблемой является то, что стандарт зачастую не самый эффективный способ получения данных из конкретной базы данных. Каждая коммерческая база данных, с которой я когда-либо работал, которая предлагает несколько бэкэндов, работает очень медленно, когда вы получаете много записей в таблицах. Стандарт ANSII также не предлагает хороших способов решения более сложных проблем, и поэтому вы в итоге получите изощренные обходные пути.
Другой подход заключается в использовании хранимых процедур и записи по одному для каждой поддерживаемой вами базы данных, но с одинаковыми именами в базах данных. Таким образом, вы можете воспользоваться преимуществами настройки производительности, доступной для каждой базы данных, и различными структурами базы данных без необходимости изменения пользовательского интерфейса, но его гораздо сложнее поддерживать, поскольку каждое изменение должно быть записано для каждой базы данных. Однако, вероятно, это будет намного быстрее для ваших пользователей, чем у ваших конкурентов, поэтому вы сможете изменить премиальную цену за продукт. Вам нужно будет взимать дополнительную плату, хотя из-за дополнительных затрат на обслуживание и дополнительных специалистов по базам данных, которые вам понадобятся для настройки производительности для каждого типа базы данных (специалист по MySQL, вероятно, не будет знать, как лучше настроить базу данных SQL Server). и наоборот)
Альтернативой для рассмотрения является то, что вы размещаете данные, и пользователи получают к ним доступ из Интернета. Тогда вам нужно только разработать и поддерживать одну базу данных по вашему выбору. Для этого вам понадобится целая куча серверов, сети и сотрудников dba, поскольку для каждого клиента вам потребуется поддерживать круглосуточную работоспособность, и они могут потребовать, чтобы вы хранили их данные на серверах, которые не содержат данных от конкурентов. Не зная бизнеса, для которого вы разрабатываете программное обеспечение, трудно сказать, является ли это жизнеспособной альтернативой.
Наименее дорогой маршрут - требовать определенного бэкэнда. Вы можете потерять потенциальных клиентов, которые не хотят покупать другой сервер. Если вы пойдете по этому пути, я бы опросил потенциальных клиентов, чтобы найти базы данных, которые они используют прямо сейчас, возможно, одна из них является отраслевым стандартом де-факто, и вы потеряете очень мало потенциальных клиентов, если будете использовать его в качестве бэкэнда. Также, если вы можете сказать, что продукт значительно быстрее конкурентов, потому что у вас есть стандартный бэкэнд, вы все равно сможете его убедить. Но если вы пойдете по этому пути, вам лучше спроектировать базу данных, которая будет невероятно быстрой.