본문 바로가기

Database4

Database partition in postgresql Postgresql를 사용하면서 대용량 데이터를 insert, select, delete할 일이 있었다. 간단한 OLAP 작업이긴 하나 row oriented rdbms를 사용해야 했고, select와 delete에 대해 최적화를 진행해야 했다. 이를 위해 사용했던 partition 기능을 정리해둔다. 참고 문서: Postgres partition Partition Partition은 하나의 logical table을 작은 physical table로 나누는 것을 의미한다. 다음과 같은 특징을 가진다. 장점 Query performance가 드라마틱하게 올라간다. 테이블에 원하는 row만 접근해도 되기 때문이다. Bulk load와 delete가 partition 추가와 삭제로 간단하게 구현될 수 있다... 2024. 1. 29.
[TIL] Postgresql에서 one-row size 구하기 Postgresql에서 하나의 row의 bytes를 다음 명령어로 구할 수 있다. SELECT sum(pg_column_size(t.*)) as filesize, count(*) as filerow FROM as t where id = ; 테이블 크기에 대해 알고 싶으면 where문을 빼면 된다. SELECT sum(pg_column_size(t.*)) as filesize, count(*) as filerow FROM as t; 2023. 12. 11.
[TIL] Redis Scan 개선 Primary Database로 in-memory db, 그 중에서도 redis를 사용하고 있다. Redis를 사용하는 이유는 disk io가 많이 발생하지 않고, 적재하는 데이터의 양이 크지 않기 때문에 in-memory state로도 충분하기 때문이다. 하지만 관계형 데이터베이스만 쓰다가 처음 in-memory database를 사용하니 rdb에서는 매우 간단하게 했던 select, join하는 작업이 쉽지 않았다. select를 잘못 구현해서 문제가 발생하고 해결한 과정에 대해서 적어보고자 한다. Context 다음 sql을 redis에서 수행하려고 한다. select * from ; 이를 위해 Scan method와 HScan method을 사용했다. Redis에는 다음과 같이 저장되어 있다. :.. 2023. 10. 21.
[후기] entgo 두달 사용 후기 golang으로 db에 접근하기 위해서 entgo를 사용해 보았다. 사실 약 두 달 정도 사용해본 터라 query optimization까지는 가지 못했고, 기본적으로 제공해주는 함수를 이용해서 쿼리, insert 등의 작업을 진행했다. 설치 https://entgo.io/docs/getting-started Quick Introduction | ent ent is a simple, yet powerful entity framework for Go, that makes it easy to build entgo.io 설치의 경우에는 간단하게 go install entgo.io/ent/cmd/ent@latest 와 같이 할 수 있다. 구조 go generate ./ent 를 통해 현재 schema 내의 파일.. 2022. 7. 23.