Совместное использование 1 таблицы между 2 различными типами баз данных
У меня проблема в том, что я хочу синхронизировать одну таблицу между двумя разными базами данных. База данных 1 находится на сервере XP с MySQL База данных 2 находится на сервере Novell с Clarion.
Можно ли разделить одну таблицу пользователей между двумя базами данных? Поэтому, когда данные помещаются в базу данных 1, база данных автоматически синхронизируется с базой данных 2. Когда это делается, таблица: пользователь в обеих базах данных одинаков?
Заранее спасибо!
1 ответ
Diederik,
Ваш вопрос не очень ясен в том, что мы не знаем, есть ли у вас доступ к исходному коду или вы можете работать только на уровне базы данных.
Вы не упомянули четко, используете ли вы Clarion для управления этими базами данных. Я предполагаю, что вы, так как вы пометили свой пост с ним.
Кроме того, вы не упомянули, какой формат файла вы используете на сервере Novell. Я предполагаю, что вы используете формат файла TopSpeed - здесь немного информации о формате файла TopSpeed: большинство программистов считают, что это "родной" формат файла для Clarion для Windows. Это не. Clarion для Windows не имеет такого понятия, как собственный формат файлов, но использует полностью управляемый драйвером подход. Clarion Professional Developer (DOS IDE) имел собственный формат файла, который представлял собой формат Clarion .DAT. Clarion для Windows может использовать любой формат файла, который предлагает драйвер или драйвер ODBC, включая старый.DAT.
Если у вас есть доступ к исходному коду, то это довольно прямая ситуация. В Clarion вы можете легко иметь разные буферы, указывающие на разные таблицы.
PROGRAM
MAP
END
szConnMySQL CSTRING( 256 )
users_mysql FILE, DRIVER( 'ODBC' ), OWNER( szConnMySQL ), NAME( 'users' )
RECORD RERCORD
id LONG
name STRING( 20 )
END
END
users_tps FILE, DRIVER( 'TopSpeed' ), NAME( 'users' )
RECORD RECORD
name STRING( 20 )
id LONG
END
END
CODE
szConnMySQL = 'Driver={{MySQL ODBC 3.51 Driver};' & |
'Server=myServerAddress;Database=myDataBase;User=myUsername;' & |
'Password=myPassword;Option=3;'
OPEN( users_mysql, 42h )
OPEN( users_tps, 42h )
users_mysql.id = 1
users_mysql.name = 'GUSTAVO PINSARD'
ADD( users_mysql )
IF NOT ERRORCODE()
users_tps.RECORD :=: users_mysql.RECORD
ADD( users_tps )
ELSE
! Do your thing
END
CLOSE( users_mysql )
CLOSE( users_tps )
Если у вас нет доступа к исходному коду, вам придется написать хранимую процедуру MySQL для обновления удаленного файла. Проблема в том, что удаленный файл, являющийся файлом TopSpeed, будет напрямую доступен с сервера MySQL, поскольку MySQL ничего о нем не знает.
Одним из решений этой проблемы является использование драйвера ODS TopSpeed на сервере MySQL и наличие доступа MySQL SP к драйверу ODBC. Я считаю драйвер ODS TopSpeed обязательным, поскольку он позволяет стратегии избегать таких ситуаций и способствует лучшей интеграции.
Подробная информация о MySQL SP выходит за рамки этого поста, в том числе и потому, что я не знаю MySQL SP до этого уровня.
С уважением