PouchDB는 클라이언트 측에서 큰 데이터베이스를 프록시 할 수 있습니까?

댄스

단일 페이지 애플리케이션에서 작업하면서 서버 측 데이터와 동기화하기 위해 많은 상용구 코드를 작성해야합니다.

PouchDB 는 클라이언트 측에서 로컬로 데이터에 액세스 할 수 있도록이 문제에 대한 우아한 솔루션을 제공합니다.

내가 이해하지 못하는 것은 데이터베이스가 너무 커서 브라우저 메모리에 완전히 맞지 않는 경우 Pouch가 데이터베이스 프록시로 적합한 지 여부입니다.

내가 읽을 수있는 한 Pouch는 전체 원격 데이터베이스를 복제하여 작동하므로 전체 데이터베이스가 브라우저 메모리에 맞는 경우에만 사용할 수 있습니다.

사용 사례 예

모든 Wikipedia 기사가 포함 된 데이터베이스가 있고 클라이언트 측에서 그 일부를 조작하고 싶다고 가정 해 보겠습니다. 복제는 갈 길이 아닙니다. 필요한 것은 프록 싱입니다. 예를 들어 쿼리가 클라이언트 측에서 로컬로 실행되면 일치하는 결과 만 전송되어야합니다. 전체 데이터베이스를 로컬로 복제 할 수 없기 때문에 복제 된 값에 대해서만 쿼리를 실행하는 것은 불가능합니다.

Nlawson

PouchDB 동기화가 원하는 것을 실제로 수행하지 않는다는 것이 맞습니다. 전체 데이터베이스 또는 서버 측 디자인 문서를 사용하여 데이터베이스의 미리 정의 된 하위 집합을 동기화하도록 설계되었습니다.

내가 당신이라면 아마도 PouchDB를 사용 하겠지만 수동으로 동기화를 처리 할 것입니다. 이 같은:

var localDB = new PouchDB('localDB');
var remoteDB = new PouchDB('http://some-site.com:5984/somedb');

function searchForDocs(docId) {
  // try the local DB first
  localDB.get(docId).catch(function (err) {
    if (err.name !== 'not_found') {
      throw error;
    }
    // not found, so fall back to the remote DB
    return remoteDB.get(docId).then(function (doc) {
      // cache in the local DB
      delete doc._rev;
      return localDB.put(doc).then(function () {
        return doc;
      });
    });
  }).then(function (doc) {
    // do something with our doc
  }).catch(function (err) {
    // handle any errors along the way
  });
}

여기서 사용 get()은 약간 간단합니다. Wikipedia의 경우 allDocs({startkey: query, endkey: query + '\uffff'})ID가 쿼리로 시작하는 모든 문서를 찾고 싶을 것입니다 . 또는 보조 인덱스를 사용할 수 있습니다.

따라서 PouchDB의 내장 동기화의 이점을 얻지 못하더라도 클라이언트와 서버에 대해 동일한 코드를 작성할 수 있다는 이점과 PouchDB의 브라우저 간 지원이 제공됩니다. 그래서 나는 이것이 그것에 대해 나쁜 방법이라고 생각하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

클라이언트 측에서 쉽게 계산할 수있는 데이터를 ViewModel에 넣어야합니까?

분류에서Dev

Sqlite.swift에서 'libsqlite3.dylib의 클라이언트에있는 버그 : API 위반으로 인해 데이터베이스 무결성이 손상되었습니다'라는 경고 메시지를 어떻게 해결할 수 있습니까?

분류에서Dev

데이터를 표시 할 수 있도록 워드 프레스 데이터베이스에 데이터를 저장하는 방법을 찾고 있습니다.

분류에서Dev

Java 프로그램과 Rest 클라이언트가 Neo4J 데이터베이스에 액세스하도록 할 수 있습니까?

분류에서Dev

Java 프로그램과 Rest 클라이언트가 Neo4J 데이터베이스에 액세스하도록 할 수 있습니까?

분류에서Dev

reqwest의 클라이언트 빌더를 사용할 때 프록시에 기본 인증을 추가 할 수있는 방법이 있습니까?

분류에서Dev

클라이언트 시스템의 MySQLdb가 서버 시스템의 데이터베이스에 연결할 수 있습니까?

분류에서Dev

내가 중포 기지 실시간 데이터베이스에서 동일한 토큰에 여러 데이터를 추가 할 수있는 방법

분류에서Dev

datagridview에 표시되는 데이터베이스를 어떻게 필터링 할 수 있습니까?

분류에서Dev

테이블에있는 데이터베이스의 모든 데이터를 표시 할 수 없습니다.

분류에서Dev

JavaScript 클라이언트 측 시계를 변경할 수 있습니까?

분류에서Dev

클라이언트 측 액세스 / 새로 고침 토큰을 사용하여 서버의 Google API에 액세스 할 수 있습니까?

분류에서Dev

클라이언트가 액세스 할 수있는 noSql 데이터베이스?

분류에서Dev

수신 된 모든 메시지를 MQTT 클라이언트 측에 저장할 수있는 방법이 있습니까?

분류에서Dev

MassTransit에 클라이언트 / 서비스가 사용할 수있는 WCF 인터페이스가 있습니까?

분류에서Dev

나중에 클라이언트-서버 db 환경에서 임베디드 Derby 데이터베이스를 사용할 수 있습니까?

분류에서Dev

Webstorm에서 "Update for Meteor 클라이언트 측 소스 파일을 사용할 수 없습니다"라는 메시지는 무엇입니까?

분류에서Dev

스프링 배치 파티셔닝 마스터는 데이터베이스를 읽고 데이터를 작업자에게 전달할 수 있습니까?

분류에서Dev

Microsoft 터미널 서비스 클라이언트를 사용하여 연결 표시 줄을 "더 어렵게"표시 할 수있는 방법이 있습니까?

분류에서Dev

RSA-클라이언트 (서버 컨텍스트에서)는 수신 데이터를 어떻게 암호화 / 복호화 할 수 있습니까?

분류에서Dev

Rails의 데이터베이스에서 나오는 데이터를 포맷 할 수 있습니까?

분류에서Dev

서버 측에서 클라이언트 측으로 Java 객체를 어떻게 전달할 수 있습니까?

분류에서Dev

Unix LDAP 데이터베이스에서 사용할 수있는 루트를 어떻게 볼 수 있습니까?

분류에서Dev

하나의 데이터베이스에있는 3 개의 테이블에 동시에 데이터를 추가 할 수 있습니까?

분류에서Dev

호스트 내부에서 RDP 클라이언트의 배터리 수준을 표시 할 수 있습니까?

분류에서Dev

ActiveMQ Artemis는 STOMP 클라이언트에 전달되지 않은 메시지를 재생할 수 있습니까?

분류에서Dev

클라이언트가 ServerSocket에 연결을 시도하고 있는지 확인할 수 있습니까?

분류에서Dev

OAuth2에서 클라이언트가 액세스 토큰을 공유해서는 안되는 경우 여러 클라이언트가 동일한 리소스에 어떻게 액세스 할 수 있습니까?

분류에서Dev

데이터베이스 측 또는 클라이언트 측에서 예외를 포착해야합니까?

Related 관련 기사

  1. 1

    클라이언트 측에서 쉽게 계산할 수있는 데이터를 ViewModel에 넣어야합니까?

  2. 2

    Sqlite.swift에서 'libsqlite3.dylib의 클라이언트에있는 버그 : API 위반으로 인해 데이터베이스 무결성이 손상되었습니다'라는 경고 메시지를 어떻게 해결할 수 있습니까?

  3. 3

    데이터를 표시 할 수 있도록 워드 프레스 데이터베이스에 데이터를 저장하는 방법을 찾고 있습니다.

  4. 4

    Java 프로그램과 Rest 클라이언트가 Neo4J 데이터베이스에 액세스하도록 할 수 있습니까?

  5. 5

    Java 프로그램과 Rest 클라이언트가 Neo4J 데이터베이스에 액세스하도록 할 수 있습니까?

  6. 6

    reqwest의 클라이언트 빌더를 사용할 때 프록시에 기본 인증을 추가 할 수있는 방법이 있습니까?

  7. 7

    클라이언트 시스템의 MySQLdb가 서버 시스템의 데이터베이스에 연결할 수 있습니까?

  8. 8

    내가 중포 기지 실시간 데이터베이스에서 동일한 토큰에 여러 데이터를 추가 할 수있는 방법

  9. 9

    datagridview에 표시되는 데이터베이스를 어떻게 필터링 할 수 있습니까?

  10. 10

    테이블에있는 데이터베이스의 모든 데이터를 표시 할 수 없습니다.

  11. 11

    JavaScript 클라이언트 측 시계를 변경할 수 있습니까?

  12. 12

    클라이언트 측 액세스 / 새로 고침 토큰을 사용하여 서버의 Google API에 액세스 할 수 있습니까?

  13. 13

    클라이언트가 액세스 할 수있는 noSql 데이터베이스?

  14. 14

    수신 된 모든 메시지를 MQTT 클라이언트 측에 저장할 수있는 방법이 있습니까?

  15. 15

    MassTransit에 클라이언트 / 서비스가 사용할 수있는 WCF 인터페이스가 있습니까?

  16. 16

    나중에 클라이언트-서버 db 환경에서 임베디드 Derby 데이터베이스를 사용할 수 있습니까?

  17. 17

    Webstorm에서 "Update for Meteor 클라이언트 측 소스 파일을 사용할 수 없습니다"라는 메시지는 무엇입니까?

  18. 18

    스프링 배치 파티셔닝 마스터는 데이터베이스를 읽고 데이터를 작업자에게 전달할 수 있습니까?

  19. 19

    Microsoft 터미널 서비스 클라이언트를 사용하여 연결 표시 줄을 "더 어렵게"표시 할 수있는 방법이 있습니까?

  20. 20

    RSA-클라이언트 (서버 컨텍스트에서)는 수신 데이터를 어떻게 암호화 / 복호화 할 수 있습니까?

  21. 21

    Rails의 데이터베이스에서 나오는 데이터를 포맷 할 수 있습니까?

  22. 22

    서버 측에서 클라이언트 측으로 Java 객체를 어떻게 전달할 수 있습니까?

  23. 23

    Unix LDAP 데이터베이스에서 사용할 수있는 루트를 어떻게 볼 수 있습니까?

  24. 24

    하나의 데이터베이스에있는 3 개의 테이블에 동시에 데이터를 추가 할 수 있습니까?

  25. 25

    호스트 내부에서 RDP 클라이언트의 배터리 수준을 표시 할 수 있습니까?

  26. 26

    ActiveMQ Artemis는 STOMP 클라이언트에 전달되지 않은 메시지를 재생할 수 있습니까?

  27. 27

    클라이언트가 ServerSocket에 연결을 시도하고 있는지 확인할 수 있습니까?

  28. 28

    OAuth2에서 클라이언트가 액세스 토큰을 공유해서는 안되는 경우 여러 클라이언트가 동일한 리소스에 어떻게 액세스 할 수 있습니까?

  29. 29

    데이터베이스 측 또는 클라이언트 측에서 예외를 포착해야합니까?

뜨겁다태그

보관