분류 전체보기
-
Clickhouse Materialized views개발/기술 2025. 11. 7. 22:41
테이블에 데이터가 추가될 때마다 특정한 쿼리를 실행하고 결과를 target 테이블에 전송하는 테이블이다. 데이터가 추가될수록 결과가 타겟 테이블에 전송되고 중간 result 는 업데이트되고 병합된다. 병합된 결과는 기존 데이터에 대한 쿼리와 동등하다. target 테이블에 미리 계산된 결과를 전달하고 싶을때 사용하는 테이블이라고 보면됨. 아래 up_down_votes_per_day_mv 테이블은 up_down_votes_per_day 테이블에 일별 데이터를 모아서 전송해주는 역할을 하는 materialized 테이블이다CREATE MATERIALIZED VIEW up_down_votes_per_day_mv TO up_down_votes_per_day ASSELECT toStartOfDay(Creation..
-
Clickhouse Projections개발/기술 2025. 11. 7. 20:39
Projections Projections | ClickHouse DocsPage describing what projections are, how they can be used to improve query performance, and how they differ from materialized views.clickhouse.com Projection 은 클릭하우스에서 속도를 올리기 위한 기술중 하나다. 실질적으로 Projection 은 기존 테이블에 숨겨진 추가 테이블이라고 볼 수 있다. projection 은 기존 테이블과 행의 순서도 다르고 primary index 도 다르다. 데이터가 들어올 때마다 자동으로 그리고 점진적으로 aggregate values 들을 구해준다 Practically,..
-
Clickhouse Skip Index개발/기술 2025. 11. 7. 20:33
Understanding ClickHouse Data Skipping Indexes | ClickHouse DocsSkip indexes enable ClickHouse to skip reading significant chunks of data that are guaranteed to have no matching values.clickhouse.com 전통적인 방식에서는 B-tree 구조로 데이터베이스가 행을 log(n) 시간에 찾을 수 있게 했다. 하지만 클릭하우스의 경우 개별 row 가 존재하는게 아니기 때문에 작동하지 않는다. 대신 클릭하우스에선 skip 인덱스라는 걸 사용해서 불필요한 데이터 chunk 를 읽지 않아도 되는 방식을 제공한다. 각 구조마다 Skip 인덱스 표시가 되어 있어서 청크..
-
Clickhouse JSON 칼럼개발/기술 2025. 10. 27. 17:12
How we built a new powerful JSON data type for ClickHouseWe’re excited to introduce our new and significantly enhanced JSON data type, purpose-built to deliver high-performance handling of JSON data. Our core engineer, Pavel Kruglov, dives into how we built this feature on top of ClickHouse's columnar storage.clickhouse.com공식 블로그 글을 읽고 공부했던 내용을 정리했다Variant Variant 칼럼이란게 있다. 기존 구조에서는 칼럼에는 하나의 데이터..
-
클릭하우스 업데이트 빠르게 만들기개발/기술 2025. 10. 3. 10:19
클릭하우스 업데이트는 왜 느릴까?How we built fast UPDATEs for the ClickHouse column store – Part 1: Purpose-built enginesClickHouse is a column store, but that doesn’t mean updates are slow. In this post, we explore how purpose-built engines like ReplacingMergeTree deliver fast, effiselfish-developer.com지난 포스트에서 클릭하우스 업데이트가 느린 이유를 설명했고 이번 포스트에서는 업데이트 속도를 올리기 위한 클릭하우스의 트릭(?) 여러가지를 소개함. 이것도 클릭하우스 블로그 글을 읽어보고 중요..
-
클릭하우스 업데이트는 왜 느릴까?개발/기술 2025. 9. 13. 10:23
How we built fast UPDATEs for the ClickHouse column store – Part 1: Purpose-built enginesClickHouse is a column store, but that doesn’t mean updates are slow. In this post, we explore how purpose-built engines like ReplacingMergeTree deliver fast, efficient UPDATE-like behavior through smart insert semantics.clickhouse.com클릭하우스 블로그 글에서 이론에 관한 부분만 요약해서 정리Row vs Column Store 데이터베이스 Row Store (행 기반..
-
[Kube] Node, Node Pool, Taint, Label개발 2024. 11. 27. 21:46
ACK Serverless 를 사용하는 경우에는 클라우드에서 제공하는 노드를 자동으로 사용하게 된다. 그런데 GPU나 ARM 처럼 특정한 장비를 운용하고 싶은 경우에는 Node 와 Node Pool 이라는 개념을 공부하게 된다.NodeACK 에서 애플리케이션을 실행하는 유닛이다. 물리 장비일수도 있고 VM 일수도 있다. 애플리케이션 실행에 필요한 CPU, 메모리, 네트워크 리소스를 제공한다. Node 에는 kubelet, kube-proxy 같은 쿠버네테스 컴포넌트가 설치되어 있어 일반 컴퓨터처럼 노드 위에 여러개의 컨테이너를 실행할 수 있다. Node Pool동일한 스펙을 가진 노드를 묶어서 관리할 수 있는 툴이다. 클라우드 환경에서 노드를 생성하고 관리하는데 이용되며 일반적으로 클러스터에는 한개 이..
-
citus - 스키마 정리하고 분산테이블 만들기개발/기술 2024. 9. 5. 22:30
아래와 같은 스키마를 가진 database 가 있다고 해보자content 테이블은 board 테이블을 참조하며 게시판 정보를 포함한다.content_feed 은 board 테이블을 참조하면서 게시판별 피드 정보를 나타내는데 사용된다.content_like 테이블은 user 와 content 정보를 참조하면서 유저의 컨텐츠 좋아요 정보를 저장한다.일반 SNS 에서 흔히 볼 수 있는 스키마다. 운영중에 content 테이블에 데이터가 많이 쌓여서 citus 를 이용해서 분산하고자 한다. 분산 칼럼은 id 필드로 선정했다select from create_distributed_table('content', 'id', shard_count := 4); 하지만 아래와 같은 에러가 발생한다.ERROR: refere..