1

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

У меня есть много машин, которые хранят данные локально в базе данных. И есть одна клиентская машина со своей собственной базой данных. Мне нужно вытащить данные со всех машин и поместить в базу данных клиента. На данный момент я начал внедрять RPC, но я не знаю, хорошая ли его идея. Потому что мне нужно вручную заботиться о каждой таблице. База данных - это SQLite.

Что лучше. Выполнение некоторых вызовов RPC или поиск световой базы данных с репликацией? Может быть, NoSQL db, как MonoDB?

+0

У меня есть очень похожие настройки, у вас есть. Планируете ли вы вытащить некоторые конкретные данные из других баз данных или просто получить их все и свои данные и разместить в них клиентские базы данных? – Andy

+0

Я могу сказать, что все данные (10 таблиц) – userbb

ответ

0

У меня есть аналогичная установка, где у меня есть несколько серверов, которые собирают различную статистику и хранят в базе данных sqlite3. Сочетание их очень просто. У меня есть скрипт python, который подключается к каждому серверу, загружает каждый файл базы данных во временную папку. Затем я открыть первую, и использовать ATTACH для каждого файла, а затем вставьте * для каждой таблицы, чтобы объединить во всех других базах данных в комбинированной базу:

conn = connect('/tmp/database1.sl3'); 
curs = conn.cursor(); 

mergeDatabases(curs, 8); 

def mergeDatabases(curs, j): 
    for i in range(2, j): 
      print "merge in database%d" %i 
      print "ATTACH '/tmp/database%d.sl3' AS foo%d;" %(i,i) 
      curs.execute("ATTACH '/tmp/database%d.sl3' AS foo%d;" %(i,i))  
      curs.execute("insert into db select * from foo%d.db;" %i) 
      curs.execute("insert into vars select * from foo%d.vars;" %i) 

      curs.execute("detach foo%d;" %i) 
+0

И после слияния вам нужно очистить базу данных сервера до следующего слияния? Значит, чтобы не загружать все уже загруженные данные? – userbb

+0

Если вы предпочитаете. То, что я делаю, так как у меня сейчас есть файл базы данных локально, мне он не нужен на сервере. В моем случае пространство сервера также ограничено. – Andy

+0

Как я могу заблокировать базу данных перед ее копированием, поэтому другой процесс не может ее записать? – userbb

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