복붙노트

[REDIS] 어느 (있는 경우)의 형 NoSQL 데이터베이스의 쿼리 결과 세트에 * 변경 *의 스트림을 제공 할 수 있습니까?

REDIS

어느 (있는 경우)의 형 NoSQL 데이터베이스의 쿼리 결과 세트에 * 변경 *의 스트림을 제공 할 수 있습니까?

어느 (있는 경우)의 형 NoSQL 데이터베이스의 쿼리 결과 집합의 변경 스트림을 제공 할 수 있습니까?

사람이 몇 가지 예를 날 지점 수 있을까요?

첫째, 나는 SQL 데이터베이스의 어떤 것도이 기능을 제공하지 않습니다 생각 - 내가 수정입니까?

나는 그 해당 SQL에 기록 될 수 있습니다 임의의, 간단한 쿼리를 지정 할 수 있어야합니다 :

SELECT * FROM accounts WHERE balance < 0 and balance > -1000;

나는에게 초기 결과 세트를 원하는 :

id: 100, name: Fred, balance: -10
id: 103, name: Mary, balance: -200

그러나 나는 그들을 막을 때까지 변화의 흐름은 영원히 따르십시오 :

meta: remove, id: 100
meta: add,    id: 104, name: Alice, balance: -300
meta: remove, id: 103
meta: modify, id: 104, name: Alice, balance: -400
meta: modify, id: 104, name: Alison, balance: -400
meta: add,    id: 101, name: Clive, balance: -200
meta: modify, id: 104, name: Alison, balance: -100
...

참고 : 나는 큰 결과 세트를 스트리밍에 대해 이야기하고 있지 않다. 나는 변화의 부드러운 실시간 스트림을 찾고 있어요.

또한, 가능하면 수평 확장 할 필요가있다.

감사,

크리스.

해결법

  1. ==============================

    1.답변이 승인되었지만, 질문 아래에있는 가정의 중심에 도달 다른 답변이 있습니다.

    답변이 승인되었지만, 질문 아래에있는 가정의 중심에 도달 다른 답변이 있습니다.

    당신은 데이터에 대한 변경 사항의 목록을 얻기에 관련된 것을 비즈니스 관심사는 무엇입니까? , 경우 대신 단지 데이터에 대한 변경 사항의 목록을 받고, 당신은 데이터가 변경 왜, 어떻게 당신에게 이벤트 집합을 받았다 무엇.

    이 개념은 아키텍처로 "CQRS"뒤에있는 근본적인 이유 중 하나입니다. 기본적으로 당신은 예를 들어, 데이터에 변화를 야기하는 모든 이벤트를 저장 FundsDeposited, FundsWithdrawn 등 당신은 "재생"해당 이벤트에 대한 능력을 확보하고 왜 시간이 지남에 따라 데이터가 변경 얼마나되지 발견,하지만.

    당신이 그 길을 갈 후에는 스트림으로 저장 이벤트에 능력을 얻고, 더 이상 스토리지 엔진의 작은 소수로 제한되지 않습니다. 대신 당신은 말 그대로 모든 스토리지 엔진을 사용할 수 있으며 해낼 것입니다.

  2. ==============================

    2.CouchDB를이 변경 피드를 가지고있다. 기본적으로는 블록 체인 또는 개시 이후 데이터베이스의 모든 변화의 역사입니다. 당신은 연속 스트림 및 쓰기 응용 프로그램 JSON, JSONP, 롱 폴링을 통해 또는 피드를 얻을 수있는 데이터베이스의 변화에 ​​대응하는.

    CouchDB를이 변경 피드를 가지고있다. 기본적으로는 블록 체인 또는 개시 이후 데이터베이스의 모든 변화의 역사입니다. 당신은 연속 스트림 및 쓰기 응용 프로그램 JSON, JSONP, 롱 폴링을 통해 또는 피드를 얻을 수있는 데이터베이스의 변화에 ​​대응하는.

    여기 내 블로그에서 피드 변경입니다

    CouchDB를 가이드의이 섹션에서 더 많은 검사를 배우려면

  3. ==============================

    3.확실하지이 정확하게 당신이 찾고있는 물건의 종류,하지만 가능성이 언급을 보증하기 위해 관련 충분히 생각한다면!

    확실하지이 정확하게 당신이 찾고있는 물건의 종류,하지만 가능성이 언급을 보증하기 위해 관련 충분히 생각한다면!

    당신이 MongoDB의에서 복제를 사용하는 경우, 모든 쓰기 작업은 oplog (작업 로그)에 저장됩니다. 모든 삽입 / 업데이트 / 삭제가 너무 거기에 기록 그래서 그들은 보조 노드에서 재생 될 수있다. 사이클 반올림 및 덮어 쓰기 자체가 (당신이 그것의 크기를 설정할 수 있습니다) 그래서 그것은 덮인 모음입니다. 나는 그것을 자신을 시도하지 않은, 그러나 아마도 당신은 oplog를 폴링 수있다 - 그러나 이론적으로,이 oplog는 변화의 흐름을 검색하는 방법으로 사용될 수있다.

  4. ==============================

    4.만 브레인 스토밍 대답 :

    만 브레인 스토밍 대답 :

    하자 예에 take MongoDB를 AND 할 위에서 설명한 것처럼 변화가 먹이를 액세스 할 수 없습니다. 예, 그것은 다른 답변에 비해 엉터리 소리 만 쓰는 동안 이러한 답변은 팝업 전에 처음으로 생각했다 ...

    현재 기능은 출장 모음 질문 -이 (http://www.mongodb.org/display/DOCS/Capped+Collections)와에 - 관련 어쩌면 서버 측 코드 실행 (http://www.mongodb.org/display/ DOCS / 서버 측 + 코드 + 실행).

    이 컬렉션 유형이 이러한 경우를 위해 만든 - 덮인 컬렉션으로는 많은 양의 데이터를 쓰기 미만 (로그 파일 등) 읽기 쉬울 것이다. 서버 측 스크립트 (이하 응용 프로그램 코드를) 처리의 많은 아웃소싱에 사용할 수 있습니다,하지만 당신은 완전히 앱에서 논리를 통합하려는 경우, 당신은이 점을 멀리 남길 수 있습니다.

    "후크"로이되는 NoSQL DB를 알고하지 마십시오. 그게 포스트 그레스 (SQL)에서 가능하다 알고있다.

    현재 스트리밍 논리는 응용 프로그램 코드 AFAIK에서 구현 될 필요가 있습니다.

    CouchDB를 그것은 MongoDB를 구현하지 않습니다 "보기"를 할 수 있었다 (이 올바르지 않습니다 경우,이 역시 흥미로운 주제입니다, 나에게 링크를주세요!).

    이 도움이 있는지 알고하지 마십시오. 그것은 여기에 SO에 대한 답변의 내 첫 번째 시도입니다.

  5. ==============================

    5.일이이 유형의 응용 프로그램이 아닌 데이터베이스에서 수행되어야한다.

    일이이 유형의 응용 프로그램이 아닌 데이터베이스에서 수행되어야한다.

    의미, 당신은 변화를 할 때마다, 그것은 새로운 기록으로 기록되어야한다. 기록에 아니 수정. 당신이 이런 식으로 할 경우 앱에 추가 할 수있는 전체 많이 더 지능이있다

  6. ==============================

    6.v.3.6로, MongoDB를 응용 프로그램이 변경의 실시간리스트에 가입 할 수 있도록 변경 스트림을 사용합니다 :

    v.3.6로, MongoDB를 응용 프로그램이 변경의 실시간리스트에 가입 할 수 있도록 변경 스트림을 사용합니다 :

    기본적으로 스트림 반환 콜렉션에있는 모든 문서에 대한 변경,하지만 당신은 조회 결과 세트와 일치하는 문서 만에 필터에 agregation 파이프 라인을 추가 할 수 있습니다.

  7. ==============================

    7.모든 변경 사항을 잡 것은 (뿐만 아니라 쿼리 결과 집합으로 변경) accepteble 경우에, 당신은 MongoDB의 복제 노예를 만들고, 마스터로부터의 모든 변경을받을 수 있습니다. 나는 그것을 구현하기가 너무 힘들해서는 안 MongoDB의 복제 노예, 심지어 PHP로 작성된 보았다.

    모든 변경 사항을 잡 것은 (뿐만 아니라 쿼리 결과 집합으로 변경) accepteble 경우에, 당신은 MongoDB의 복제 노예를 만들고, 마스터로부터의 모든 변경을받을 수 있습니다. 나는 그것을 구현하기가 너무 힘들해서는 안 MongoDB의 복제 노예, 심지어 PHP로 작성된 보았다.

  8. ==============================

    8.MongoDB를은 tailable 커서를 구현하지만 덮인 컬렉션에만. 해당 문서를 참조하십시오. 그것은 당신의 특정 요구 사항에 따라 사용 될 수있다.

    MongoDB를은 tailable 커서를 구현하지만 덮인 컬렉션에만. 해당 문서를 참조하십시오. 그것은 당신의 특정 요구 사항에 따라 사용 될 수있다.

  9. from https://stackoverflow.com/questions/5257177/which-if-any-of-the-nosql-databases-can-provide-stream-of-changes-to-a-query by cc-by-sa and MIT license