Database
-
[Clickhouse] Docker 로 Clickhouse 구현하기Database/Clickhouse 2024. 2. 17. 17:05
- 목차 들어가며. 이번 글에서는 Docker 를 활용해서 Clickhouse 를 구축하는 글을 작성하려고 합니다. 사용할 Docker Image 는 bitnami/clickhouse 이미지입니다. 간단한 MergeTree 엔진의 Table 을 생성하고 데이터를 취급하는 예시들을 작성할 예정입니다. bitnami/clickhouse 이미지를 사용하는 이유는 추후에 Kubernetes 에서 Clickhouse 를 구축하는 상황에서 Bitnami Helm Repo 의 Clickhouse Chart 가 사용됩니다. 그래서 yandex 를 포함한 다른 배포버전보다 bitnami 를 선택하였습니다. Clickhouse Docker Container 구현하기. 아래 명령어를 통해서 Clickhouse Contain..
-
[ClickHouse] Multi Sharding 구현하기 ( Docker, Shards )Database/Clickhouse 2024. 2. 17. 16:21
- 목차 들어가며.ClickHouse 는 Multi Sharding 을 구현할 수 있습니다.Distributed Table Engine 을 통해서 생성되는 MergeTree Family 들이 존재하며,Distributed Table 들은 Partition Key 를 통해서 여러 ClickHouse Node 들로 분배되어 저장됩니다.Distributed Table 을 잘 설명할 수 있는 사진 몇장을 아래에 첨부해두었습니다.이 이미지 자료를 통해서 좀 더 상세히 설명드리면,ClickHouse 는 여러 노드들로 구성되어 하나의 클러스터를 구성할 수 있습니다.만약 2개의 서버로 클러스터를 구성한다면 2개의 Sharding 을 적용하거나1개의 Shard 에서 Primary - Replica 를 1개씩 적용할 수도..
-
[MySQL] Master Slave 구성해보기 ( Replication , Replica )Database 2024. 2. 16. 22:56
- 목차 들어가며. 이번 글에서는 두개의 MySQL 을 통해서 Master - Slave 구성을 해보려고 합니다. Docker 를 기반으로 2개의 MySQL Container 를 생성하고, 하나의 Master 그리고 다른 하나를 Slave 로써 동작하게 설정합니다. MySQL 구성하기. 먼저 Master 와 Slave 의 my.cnf 를 설정합니다. log-bin 설정은 binlog 파일의 prefix 에 해당하는 문자열을 설정하는 옵션이구요. binlog, relay-log 에 대한 설정을 추가합니다. 그리고 Replication 을 위한 USER 와 GRANT 정보를 생성하는 init.sql 또한 생성하였습니다. cat select * from test.test_table; +------+------..
-
[Clickhouse] Shard & Replica Cluster 구성하기Database/Clickhouse 2024. 2. 14. 07:14
- 목차 들어가며. 이번 글에서는 docker-compose 를 활용하여 Clickhouse Cluster 를 구성하는 내용을 작성하려고 합니다. ClickHouse 의 docker-compose Recipes 에서 설명하는 내용을 토대로 작성하였구요. Shard 와 Replica 의 다양한 조합과 Clickhouse-Keeper 가 함께 클러스터를 구성합니다. 아래 링크는 Clickhouse docker-compose Recipes 에 대한 Github 링크입니다. https://github.com/ClickHouse/examples/tree/main/docker-compose-recipes/recipes https://github.com/ClickHouse ClickHouse ClickHouse ha..
-
[Vitess] vtctldclient AddCellInfo 명령어 알아보기Database/Vitess 2024. 2. 5. 07:39
- 목차 들어가며.이번 글에서는 vtctldclient 의 AddCellInfo 명령어에 대해 알아보겠습니다.AddCellInfo 는 Vitess 클러스터의 Topology Server에 새로운 셀(Cell) 정보를 추가하는 명령어입니다.Cell 은 Vitess 클러스터에서 논리적인 그룹을 나타내며, tablet 들이 위치할 수 있는 영역입니다. 예를 들어, 총 8개의 vttablet 들이 존재할 때에 4개는 Cell1, 나머지 4개의 vttablet 은 Cell2 로 설정할 수 있습니다. 아래의 이미지와 같이 물리적인 vttablet 을 4개씩 그룹지어 논리적 단위로 나눌 수 있게 됩니다. Topology Service ( Etcd ).일반적으로 Vitess 의 Topology Service 는 E..
-
[ClickHouse] Compact Wide Parts 알아보기 ( part_type )Database/Clickhouse 2024. 1. 16. 21:17
- 목차 들어가며. 이번 글에서는 ClickHouse MergeTree 의 part_type 에 대해서 알아보려고 합니다. 먼저 Parts 에 대한 자세한 설명은 아래 링크로 대신하도록 하겠습니다. https://westlife0615.tistory.com/737 [ClickHouse] Parts & Partition 알아보기 - 목차 들어가며. 이번 글에서는 ClickHouse 의 MergeTree 엔진에서 사용되는 Parts 와 Partition 에 대해서 알아보려고 합니다. Partition 은 MergeTree Table 에 생성되는 데이터의 물리적인 단위입니다. Table 은 P westlife0615.tistory.com https://westlife0615.tistory.com/565 [Cl..
-
RocksDB Leveled Compaction 알아보기Database/RocksDB 2024. 1. 10. 17:11
- 목차 들어가며. Leveled Compaction 은 RocksDB 의 Compaction 종류 중의 하나입니다. RocksDB 는 LSM-Tree 파일 구조를 취하기 때문에 SSTable 의 Compaction 은 중요한 기능 중의 하나입니다. 이번 글에서는 Leveled Compaction 에 대해서 알아보는 시간을 가지려고 합니다. Level 이란 ? RocksDB 는 MemTable 과 SSTable 이라는 In-Memory Structure 와 On-Disk Structure 를 가집니다. Level 이라는 개념은 SSTable 에 적용되는데요. Level 은 SSTable 에 대하여 Merge 가 수행된 정도를 의미합니다. Level 0 부터 시작하여 Level n 까지 Level 의 범위..
-
RocksDB WAL (Write-Ahead Log) 알아보기Database/RocksDB 2024. 1. 10. 16:56
- 목차 들어가며. RocksDB 는 스토리지 엔진으로써 LSM-Tree 를 사용합니다. LSM-tree 는 구조적으로 Write-Ahead log 를 취하게 되는데, Write-Ahead Log (WAL log) 에 의해서 Recovery 가 가능해집니다. 먼저 Write-Ahead Log (WAL log) 에 대해서 간단하게 알아보도록 하겠습니다. 클라이언트는 RocksDB API 를 통해서 데이터를 삽입합니다. ( 참고로 RocksDB 에서 취급하는 데이터의 형태는 Key-Value Pair 모양을 따릅니다. ) 클라이언트의 데이터 생성 요청을 WAL log 에 로그 형태로 삽입됩니다. 그리고 MemTable 과 SSTable 로 생성 요청이 전달되죠. 아래의 이미지처럼 Write Log 가 먼저 ..
-
RocksDB Column Family 알아보기Database/RocksDB 2024. 1. 10. 09:19
- 목차 들어가며. RocksDB 의 Column Family 는 SQL 의 Table, NoSQL 의 Collection 과 유사합니다. 즉, Key-Value Pair 들을 저장하는 논리적인 단위입니다. 즉, RocksDB 의 데이터베이스는 Column Family 라는 단위로 데이터들이 저장될 파티션을 나누게 되구요. 만약 명시적으로 Column Family 를 생성하지 않는다면 default Column Family 를 사용하게 됩니다. Column Family 는 여러가지 장점을 가집니다. 장점들은 SQL Table 과 같이 데이터의 저장 단위를 분리하였기 때문에 파생되는 장점입니다. 첫번째 장점은 Column Family 단위로 MemTable 과 SSTable 그리고 Bloom Filter ..
-
RocksDB Architecture 알아보기 (LSM-tree)Database/RocksDB 2024. 1. 10. 07:45
- 목차 관련된 글. https://westlife0615.tistory.com/566 RocksDB Architecture 알아보기 (LSM-tree) - 목차 들어가며. RocksDB 는 LSM-Tree 형식의 구조를 취합니다. LSM-Tree 를 설명하기 위해서 MemTable, SSTable, WAL Log, Compaction 등의 배경지식이 필요한데요. 이번 글에서 RocksDB 를 구성하는 요소들에 대해 westlife0615.tistory.com https://westlife0615.tistory.com/567 RocksDB Column Family 알아보기 - 목차 들어가며. RocksDB 의 Column Family 는 SQL 의 Table, NoSQL 의 Collection 과 유사합..