2011-01-04 5 views
1

Проблема, которая у меня есть, заключается в том, что я хочу синхронизировать одну таблицу между двумя различными базами данных. База данных 1 находится на сервере XP с MySQL База данных 2 находится на сервере Novell с Clarion.Доля 1 таблица между 2 различными типами баз данных

Возможно ли разделять пользователей из одной таблицы между двумя базами данных? Итак, когда данные помещаются в базу данных 1, база данных автоматически синхронизируется с базой данных 2. Когда это делается, таблица: пользователь находится в обеих базах данных одинаково?

Заранее благодарен!

+1

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

ответ

2

Diederik,

Ваш вопрос не очень понятно, что мы не знаем, если у вас есть доступ к исходному коду или может работать только на уровне базы данных.

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

Кроме того, вы не указали, какой формат файла вы используете на сервере Novell. Я предполагаю, что вы используете формат файла TopSpeed ​​- здесь немного информации о формате файлов TopSpeed: большинство программистов считают, что это «родной» формат файла для Clarion для Windows. Это не. Clarion для Windows не имеет такой вещи, как родной формат файла, но использует полностью управляемый драйвером подход. У разработчика Clarion Professional (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, ничего об этом не знает.

Одним из решений для преодоления этого является использование драйвера ODBC TopSpeed ​​на сервере MySQL и доступ к MySQL-файлу для доступа к драйверу ODBC. Я считаю, что драйвер ODBC TopSpeed ​​должен иметь, поскольку он позволяет стратегии избежать таких ситуаций и способствовать лучшей интеграции.

Информация о MySQL SP выходит за рамки этой публикации, также потому, что я не знаю MySQL SP на этом уровне.

С уважением

Смежные вопросы