CockroachDB의 트랜잭션 로그 테일링. 3부
CockroachDB Change Data Capture(CDC) . 이 기능은
이 특정 DB는 일을 훨씬 더 쉽게 만듭니다. 트랜잭션 로그 테일링pattern의 트랜잭션 로그 마이너는 문자 그대로 CockroachDB의 CDC가 되었습니다. 매우 간단하고 실용적인 방법으로 말 그대로 리디렉션할 수 있습니다.
테이블과 관련된 로그를 싱크(Kafka, google 클라우드 Pub/Sub 등...)로, 이 특정 통합 기능은 사용할 수만 있습니다.
엔터프라이즈 계층에서. 그럼에도 불구하고 코어 프리 티어에서는 여전히 직접 통합할 수 있습니다. 또한 이전 버전을 변경할 필요가 없습니다.
연결 설정, CockroachDB는 PostgreSQL과 호환되기 때문에 Postgresql 드라이버를 사용하여 CockroachDB에 연결할 수 있습니다.
이제 단계를 설명하고 이를 실행해 보겠습니다.
요구 사항
우리는 이 모든 것을 로컬에서 먼저 코어 계층과 함께 영원히 무료로 시도할 의도가 있습니다. 전체 데모를 제공하기 위해 Google Cloud를 사용하겠습니다.
Pub/Sub는...wait for it...cats ;)라는 주제에 대한 메시지를 기다리는 싱크입니다. 따라서 다음이 필요합니다.
CockroachDB 돌리기
꽤 간단하다
cockroach start-single-node --insecure
이 명령이 생성하는 로그를 읽으면 중요한 다음 주소를 알 수 있습니다.
[선택] 단말기에서 바퀴벌레로 연결하기
탐색하고 일부 명령을 입력하려는 경우 매우 간단하게 연결할 수 있습니다.
cockroach sql --url="{DSN}" --format=csv
이 마지막 명령에서 DSN이 CockroachDB에 연결하기 위한 URI임을 고려하십시오.
이제 이 콘솔 내에서 rangefeed을 활성화해야 합니다.
SET CLUSTER SETTING kv.rangefeed.enabled = true;
golang의 코드
CockroachDB가 PostgreSQL과 호환된다는 점을 감안할 때 데이터베이스 연결에 여전히 gorm을 사용할 수 있습니다. 다음은 다음을 사용하는 함수의 스니펫입니다.
CockroachDB CDC는 이벤트 테이블의 모든 변경에 대한 로그를 얻습니다. 물론 이것은 새 로그를 기다리며 중단됩니다.
파일: repositories/event/repository.go
package event
// ChangeFeed fetch logs from events feed.
func (r *repository) ChangeFeed(ctx context.Context, pubsub msgrelay.PubSub) error {
rows, err := r.db.Raw("EXPERIMENTAL CHANGEFEED FOR events").Rows()
if err != nil {
return err
}
defer rows.Close()
topic := pubsub.Topic("cats")
var (
table string
key string
value []byte
)
for rows.Next() {
if err := rows.Scan(&table, &key, &value); err != nil {
return err
}
pubsub.Publish(ctx, topic, value)
}
return nil
}
그렇게 할 수 있는 쿼리는
EXPERIMENTAL CHANGEFEED FOR <table_name>
이며 이는 코어 계층에 있습니다. 기업의 경우엄청나게 간단하며 코드에서 브로커와의 통합을 처리할 필요가 없습니다. 말 그대로 다음과 같은 형식을 따릅니다.
CREATE CHANGEFEED FOR TABLE table_name, table_name2 INTO '{scheme}://{host}:{port}?{query_parameters}';
결론
이 모든 것을 통해 나는 당신이 자신을 해킹하고 이 모든 정보로 이 패턴을 구현하는 방법을 찾을 수 있다고 생각합니다. 좀 남겨줄게
필요하기 때문에 확인할 수 있도록 다음 링크를 클릭합니다. 이것은 전체 설명이 아니라 아주 짧은 설명이었습니다.
물론 여기에서 전체 코드를 확인할 수 있습니다repository.
참고: 코드가 더 나을 수 있습니다.
서지
Transaction Log Tailing , 가장 중요한 것은 먼저 패턴의 아이디어를 이해하는 것입니다.
CockroachDB CDC .
EXPERIMENTAL CHANGEFEED FOR command .
Install CockroachDB on Linux .
Changefeed to Google Cloud Pub/Sub .
Reference
이 문제에 관하여(CockroachDB의 트랜잭션 로그 테일링. 3부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gealber/transaction-log-tailing-on-cockroachdb-part-iii-3b4o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)