2012-05-29 1 views
1

Я работаю в sqlite db в своем приложении, используя C++ linux. У меня есть требование реплицировать sqlite db на другой машине.Что касается репликации sqlite

для этого, так как sqlite не имеет механизма репликации, а также нет сетевых API-интерфейсов, я хочу прочитать файл sqlite db с помощью C++ fstream и создать новый файл db на другой машине.

Я борюсь за день.

Может ли кто-нибудь помочь мне в этом.

Ниже приведен код:

ifstream _fstream; 
_fstream.open("Sourcefile",ios::in); 
ofstream _ostream; 
_ostream.open("ReplicatedFile",ios::out); 
_ostream << _fstream; 
_ostream.close(); 
_fstream.close(); 

ответ

1

Вы можете захотеть взглянуть на встроенный SQLite Backup API, который позволяет онлайн резервное копирование базы данных. Это может быть использовано для создания формы репликации, вам, конечно же, придется перенести файл в удаленное местоположение (если это необходимо). Скорее всего, лучше использовать функции sqlite_backup_*(), а не напрямую обращаться к файлам, так как функции sqlite блокируют базу данных.

+0

да ... как вы сказали, я с помощью резервного копирования APIs для создания резервной копии. После создания резервной копии я хочу переместить файл резервной копии в удаленное местоположение. для этого я пытаюсь использовать класс io streams. можете ли вы мне помочь, как этого достичь? –

0

Поскольку ваша база данных становится больше, копирование было бы плохой идеей.

Вместо этого вы можете использовать litereplica.

Он сохранит реплику базы данных на других машинах.

Вам необходимо будет заменить файл sqlite3.c в приложении или ссылку на библиотеку.

0

Я знаю, что исходное сообщение устарело, но это может помочь другим, у кого есть похожие вопросы. Я не уверен, что это то, что вы хотите, но если вам нужно сделать репликацию на нескольких серверах (распределенных), вам может понадобиться Rqlite.

rqlite - это распределенная реляционная база данных, в которой в качестве механизма хранения используется SQLite. rqlite использует Raft для достижения консенсуса во всех экземплярах баз данных SQLite, гарантируя, что каждое изменение, внесенное в систему, производится в кворуме баз данных SQLite или вообще отсутствует.

вы можете прочитать здесь: http://www.philipotoole.com/replicating-sqlite-using-raft-consensus/

надеюсь, что это помогает,

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

  • Нет связанных вопросов^_^