Совместное использование 1 таблицы между 2 различными типами баз данных - PullRequest
1 голос
/ 04 января 2011

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

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

Заранее спасибо!

1 Ответ

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

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 ничего о нем не знает.

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

Подробности о MySQL SP выходят за рамки этого поста, в том числе и потому, что я не знаю MySQL SP до этого уровня.

Привет

...