RxDB는 웹 애플리케이션에서 사용되는 익숙한 인터페이스를 갖춘 실시간 데이터베이스입니다. RxDB는 응용 프로그램의 데이터를 로컬 및 원격 장치 사이에서 동기화 할 수있는 기능을 제공합니다. 데이터의 복제와 배포를 처리하는 방법을 살펴 보겠습니다.
데이터베이스 생성 및 설정
먼저, RxDB 데이터베이스를 생성하고 설정해야합니다. 예를 들어 mydb
라는 이름의 데이터베이스를 생성하고, todos
라는 컬렉션을 추가하려면 다음과 같이 코드를 작성할 수 있습니다.
import RxDB from 'rxdb';
import { addRxPlugin } from 'rxdb/plugins/core';
import { addPouchPlugin } from 'rxdb/plugins/pouchdb';
import { addRxDBReplicationPlugin } from 'rxdb/plugins/replication';
addRxPlugin(require('pouchdb-adapter-idb'));
addRxPlugin(addPouchPlugin(require('pouchdb-adapter-http')));
addRxPlugin(addRxDBReplicationPlugin(require('pouchdb-replication')));
const createDatabase = async () => {
const db = await RxDB.create({ name: 'mydb', adapter: 'idb' });
const todosCollection = await db.collection({
name: 'todos',
schema: todoSchema,
replication: true, // 복제 활성화
syncURL: 'http://localhost:5984/mydb' // 동기화할 URL
});
return { db, todosCollection };
};
// 데이터베이스 생성 및 컬렉션 가져오기
const { db, todosCollection } = createDatabase();
이 코드는 RxDB 데이터베이스를 생성하고 필요한 플러그인을 추가하는 작업을 수행합니다.
데이터 복제 설정
RxDB는 PouchDB를 기반으로 합니다. PouchDB는 CouchDB와 호환되는 ReplicaSet 프로토콜을 구현하여 데이터를 복제 및 동기화 할 수 있습니다. 데이터베이스 설정에서 replication
속성을 true
로 설정하고 syncURL
속성에 동기화 할 URL을 지정하여 데이터베이스 복제를 활성화합니다.
const todosCollection = await db.collection({
name: 'todos',
schema: todoSchema,
replication: true, // 복제 활성화
syncURL: 'http://localhost:5984/mydb' // 동기화할 URL
});
syncURL
속성에는 동기화 할 대상 데이터베이스의 URL을 지정해야합니다. 예를 들어, CouchDB를 사용하여 데이터베이스를 호스팅하는 경우 해당 URL을 지정해야합니다.
데이터베이스 동기화
이제 데이터베이스가 설정되었으므로 동기화를 시작할 수 있습니다. RxDB는 자동으로 데이터베이스 간 동기화를 처리하지만, 수동으로 동기화를 트리거 할 수도 있습니다.
// 수동으로 동기화 트리거
const sync = await todosCollection.sync();
// 동기화 이벤트 수신
sync.change$.subscribe(change => {
console.log(change);
});
sync
함수는 데이터베이스 동기화를 수동으로 트리거하고, change$
옵저버블을 사용하여 동기화 이벤트를 수신할 수 있습니다.
결론
이제 RxDB를 사용하여 데이터의 복제와 배포를 처리하는 방법을 알게되었습니다. 데이터베이스 설정에서 동기화를 활성화하고 동기화할 대상 URL을 지정하기만하면 RxDB는 데이터의 변경 사항을 자동으로 복제하고 배포합니다. RxDB를 사용하여 데이터의 복제 및 배포를 처리하는 것은 웹 애플리케이션에서 중요한 기능이며, 손쉽게 구현할 수 있습니다.
더 많은 정보를 원하는 경우 RxDB 공식 문서를 참조하십시오.