1

良い技術を選ぶという私の問題を説明しようとします。複製用データベースまたは簡単なデータ転送用データベース

私はデータベースにローカルにデータを格納する多くのマシンを持っています。また、独自のデータベースを持つクライアント・マシンが1つあります。私が必要とするのは、すべてのマシンからデータを取り出し、クライアントのデータベースに入れることです。 今のところ私はいくつかのRPCを実装し始めましたが、良い考えがあるかどうかはわかりません。私は手動で各テーブルの世話をする必要があるので。データベースはSQLiteです。

何が良いですか。いくつかのRPC呼び出しを行うか、複製を使って軽いデータベースを探しますか? MonoDBのようなNoSQLデータベースですか?

+0

あなたが持っているように、私は非常によく似たセットアップを持っています。特定のデータを他のデータベースから取得するか、すべてのデータとそのデータを取得してクライアントデータベースに入れることを計画していますか? – Andy

+0

私はすべてのデータ(10テーブルまで) – userbb

答えて

0

私はさまざまな統計情報を収集し、sqlite3データベースに格納するいくつかのサーバーを持っているのと同様の設定をしています。それらを組み合わせることは本当に簡単です。私は、各サーバーに接続し、各データベースファイルを一時的なフォルダにダウンロードするPythonスクリプトを持っています。私は、最初の1を開き、各ファイルに対して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

関連する問題