inflearn logo
강의

講義

知識共有

カフカパーフェクトガイド - ksqlDB

トピックをソースとするTableのRocksDB動作メカニズムの理解 - 01

RocksDB에서 StateStore로 읽어온 값은 메모리 상태에 저장될까요?

730

silverprize3290

投稿した質問数 53

1

안녕하세요, 철민님. 항상 좋은 강의 감사드립니다!

한 가지 질문 드리고 싶은 것이 있어 글을 작성합니다.

 

혹시 RocksDB에서 StateStore로 읽어온 데이터는 어디에 저장이 되어 있을까요? RocksDB는 로컬에 Key / Value 형식으로 데이터를 가지는 것으로 이해를 했는데, StateStore로 읽어오면 그 값은 메모리에 있을까요?

 

StateStore의 구현체가 RocksDB도 있고, In-Memory 같은 형태도 존재하고 있는데, 이렇게 구현체가 따로 있는 것으로 추정컨데 RocksDB를 이용한 StateStore는 값을 읽어와서 메모리에 따로 저장하지 않고, 필요할 때 마다 로컬 디스크에 있는 값을 바로바로 불러오는게 아닐까 싶은데...

 

어떤 형식으로 동작하는 것일까요...?

kafka 데이터-엔지니어링 ksqldb

回答 3

0

logt

좋은 질의와 답변 감사합니다. 또 하나 좋은 것 배워 갑니다.

0

silverprize3290

아하, 철민님 항상 양질의 답변 감사드립니다! Kafka Streams에서 캐시 형태의 StateStore를 구현할 때, In Memory를 쓰기도 하는 것 같았는데.. 저도 정확하진 않네요!

"RocksDB에서 state 를 관리하되, 읽어들인 state는 메모리에 올라가고 변경된 state는 storage에 저장이 됩니다."

혹시 위 부분에 대해서 조금만 더 알려주실 수 있으실까요?
예를 들어 ctas로 만들어진 쿼리가 메세지를 토픽으로 전송할 때, RocksDB에서 state를 읽어와서 전송하는데 이 때의 state는 메모리에 저장된다는 말씀이실까요?

그리고 ctas의 처리 결과로 changeLog나 Repartition 토픽같이 내부에 저장되는 토픽들에 저장할 때는 메모리에 남겨둘 필요가 없으니, 바로 로컬 스토리지에 푸시해버리는 것이고...

 

맞을까요??

0

dooleyz3525

RocksDB는 일단 데이터를 메모리와 Storage에 같이 저장합니다. 해당 state 데이터가 변경되지 않았을 경우에는 메모리에 계속 있으며, 변경이 된 경우 메모리에도 저장되고 Storage에도 저장됩니다.

그러니까 Kafka 메시지가 계속 입력되고 특정 Primary key값으로 MView등이 계속 갱신되면 RocksDB는 메모리와 Storage에 계속 같이 저장되며, 해당 Primary key값으로 MView등의 갱신되지 않으면 메모리에서만 읽어 오면 됩니다.

0

dooleyz3525

안녕하십니까,

ksqlDB의 State store의 구현체가 in-memory 또는 persistent 가 있다고 하는데, persistent는 당연히 rocksdb이고, 이 in-memory 구현체의 실체가 애매모호 합니다.

이 in-memory state store는 Mastering Kafka Streams and ksqlDB 책에서 언급이 되었는데, 아마 제 생각엔 RocksDB를 도입하기 이전에(또는 ksqlDB 초창기에) JVM Heap 메모리 상에서 state store를 구현하려는 시도가 있었던걸로 아는데, 이걸 의미하는것 같기도 합니다(제가 잘못 알고 있는 걸 수도 있습니다 ^^)

하지만 지금은 ksqlDB의 state store는 RocksDB로만 생각하시면 될 것 같습니다.

그리고 ksqldb의 메모리의 상당 부분은 RocksDB가 사용합니다. RocksDB에서 state 를 관리하되, 읽어들인 state는 메모리에 올라가고 변경된 state는 storage에 저장이 됩니다.

감사합니다.

 

Ksqldb.io 가 confluent.io 로 리다이렉션 되요

0

49

2

복합키 디코딩 오류 질문드립니다.

0

75

2

Table의 상태(Stateful) 관리 질문

0

102

2

섹션 10 관련 강의자료

0

181

2

Compact Topic에 대하여

0

205

2

시스템 타임존과 카프카 Stream 타임존이 불일치합니다.

0

143

1

ksql DB 서버를 올릴떄 아래와 같이 에러 발생

0

147

2

스트림, 테이블 생성시 데이터 관련 문의

0

216

1

푸시 쿼리 종료 방법에 대해 문의 드립니다.

0

195

1

table의 데이터가 실시간으로 topic에 담기지 않습니다

0

226

1

debezium에서 ksqldb로

0

253

2

CLI로 실행과 코드로 실행하면 결과가 다르게 나옵니다

1

176

1

ksqldb는 workbench처럼 ui는 없을까요?

0

308

2

Pull 쿼리 제약에 대한 이유

0

218

1

IoT Event Streaming 적용에 대해서

0

210

1

[수정요청] Join이해 중 select inner join a.user_id 수정 필요

0

273

2

실무에서 카프카 환경 구축

0

531

2

[수정요청] Mview CSAS 강좌중에 Insert문장 수정 요청

0

248

1

inner join , outer join

0

199

1

group by 리파티션에 대한 질문

0

240

1

ksqldb timestamp 타입 질문

0

245

1

stream format 관련 질문

0

271

1

전통적 분석 시스템 한계에 대해 질문있습니다.

0

275

1

AWS 에서 confluent kafka 와 apache kafka 차이가 궁금 합니다.

0

1687

2