문제

SQLITE3을 포함시키고 메모리 인 데이터베이스를 사용하는 응용 프로그램에서 응용 프로그램의 두 실행되는 인스턴스간에 데이터베이스를 복제 할 수 있습니까? 모든 DB 액세스를 복제하는 홈브류 프로토콜로 손으로 할 수 있지만 DB 계층 내부에서 수행해야 할 것 같습니다.

도움이 되었습니까?

해결책

Brute Force 접근법 : ".dump"명령을 보내서 데이터의 텍스트 표현을 작성하십시오. 해당 데이터를 두 번째 데이터베이스로 읽으십시오. 당신이 그것을 사용할 수 있는지 확실하지 않습니다.

정밀한 그레이드 업데이트가 필요한 경우 (각각의 사본을 다른 사본으로 보내기) sqlite3_update_hook

그러나 오류를 어떻게 처리 할 계획입니까? 예를 들어, APP2의 DB 사본이 어떤 이유로 업데이트 할 수 없을 때 어떻게됩니까?

이를 해결하려면 데이터베이스를 서버 프로세스로 옮기고 두 앱과 대화하도록하십시오.

다른 팁

상자 밖으로, 아니요. 적은 수의 타사 옵션이 있습니다.

sqlite sync : https://ampliapps.com/sqlite-sync/ 이것은 SQLITE뿐만 아니라 다른 데이터베이스에 복제 할 수 있고 SQLITE 엔진을 수정하지 않기 때문에 매력적으로 보입니다. 아직 시도하지 않았습니다.

Litereerpleply : http://litereplica.io/ 한 가지 방법 만. 조금 주위에 있었던 것 같습니다.

litesync : http://litesync.io/ 양방향 복제. 꽤 새롭지 만 Litereplica의 진화는 아마도 나타나는 것보다 더 성숙 할 것입니다. 나는 이것을 조금 시도했으며 개발자가보고있는 몇 가지 버그와 함께 원활하게 작동하는 것 같습니다. 개발자의 수정 된 SQLITE 엔진을 사용해야합니다. 당신은 또한 많은 제어를 얻지 못합니다. 예를 들어 데이터베이스를 다시 열지 않고는 이제 복제를 할 수 없습니다.

lsyncd- 라이브 동기화 (미러) 데몬 여기에서 사용될 수 있습니다. RSYNC를 사용하여 파일 레벨에서 연속 복제를 수행합니다.

메모리 내 데이터베이스에서 복제를 원한다면 살펴 봐야합니다. 버클리 DB (BDB). 그러나 BDB의 데이터 모델은 문자열 스트링 사전이므로 SQL의 유연성을 느슨하게합니다. 또한 3 개의 조항 라이센스가 있으므로 프로젝트에 상업적인 경우 라이센스를 받아야합니다.

프로젝트의 범위가 간단한 프로세스 데이터베이스이기 때문에 그렇지 않습니다. 그러나 데이터베이스는 단일 파일 일 뿐이므로 일반 파일 복사 작업, RSYNC 또는 유사한 것에 따라 자신의 복제 스크립트를 작성할 수 있습니다.

RDBMS의 SQLITE 기반 클라이언트/서버 유형을 정말로 원한다면 살펴볼 수 있습니다. sqlitedbms.

조화? 하나의 모 놀리 식 파일로 sqlite db가 있기 때문에 당신이 할 수있는 최선은 핫 스페어였습니다. 두 "인스턴스"사이에 로빈을 둥글게 할 수 없었습니다. 핫 스페어는 나쁘지 않습니다. 간단히 소란없이 다른 App+DB를 집어 올리십시오. MySQL Master-Slave 또는 쉽게 수동 중재가있는 경우 Active Passive와 비교할 수 있습니다. MySQL 복제는 Unison/rsync와 같은 차이가 아니라 SQL 주위를 통과합니다. 그러나 Unison과 함께 마스터 마스터가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top