Database 16

GiST와 GIN 인덱스

PostgreSQL은 다양한 데이터 구조와 검색 요구에 대응할 수 있는 인덱싱 시스템을 제공한다. 그중에서도 GiST(Generalized Search Tree)와 GIN(Generalized Inverted Index)은 데이터의 구조와 검색 방식에 따라 최적화된 두 가지 주요 인덱스 유형이다. GiST (Generalized Search Tree)범위 쿼리, 공간 데이터, 사용자 정의 데이터 타입 등 다양한 데이터 구조에 대해 유연한 인덱싱을 제공하는 트리 기반 인덱스이다. B-트리와 유사한 구조를 가지고 있으며, 특정 데이터 타입이나 쿼리 조건에 맞춰 쉽게 확장할 수 있다.구조 및 특성트리 구조: GiST 인덱스는 B-트리와 유사하게 각 노드가 키와 자식 노드 포인터를 포함하는 트리 구조를 가진다...

Database/Postgresql 2024.08.15

인덱스

인덱스는 데이터베이스 테이블의 특정 칼럼에 대해 생성되는 구조로, 데이터 검색을 더 빠르게 수행할 수 있도록 도와주는 도구이다.검색 속도 향상: 전체 테이블을 스캔하는 것보다 훨씬 빠르게 데이터를 찾을 수 있다.정렬 및 필터링 성능 개선: 데이터 정렬 및 필터링 작업의 성능을 향상시킨다.Unique Constraint 지원: 유니크 인덱스는 테이블 내에서 중복된 데이터를 방지할 수 있다.디스크 공간 소모: 인덱스를 생성하면 추가적인 디스크 공간이 필요하다.데이터 수정 시 성능 저하: 삽입, 삭제, 업데이트 작업이 발생할 때 인덱스도 함께 업데이트되므로 성능이 저하된다. Full Table Scan이 더 좋은 경우테이블에 데이터가 몇십 또는 몇 백 건밖에 없는 경우, 전체 테이블을 스캔하는 것이 인덱스를 ..

Database 2024.08.06

MongoDB

MongoDB는 NoSQL 데이터베이스로, 비관계형 데이터베이스 시스템이다. 전통적인 관계형 데이터베이스와 달리, MongoDB는 JSON과 유사한 BSON(Binary JSON) 형식의 문서를 사용하여 데이터를 저장하고 관리한다. 이러한 특성 덕분에 다양한 형식의 데이터를 유연하게 저장하고 빠르게 처리할 수 있다.NoSQL: 비관계형 데이터베이스로, 스키마가 필요하지 않다.JavaScript 질의어: 자바스크립트를 질의어로 사용하여 데이터베이스와 상호작용할 수 있다.배열 데이터: 배열 형태의 데이터를 효율적으로 저장하고 관리할 수 있다.JSON 저장: JSON 형태의 데이터를 자유롭게 저장할 수 있다. MongoDB 관리 도구MongoDB Shell (mongosh)명령줄 인터페이스(CLIMongoDB..

Database 2024.08.02

파티셔닝과 샤딩

테이블을 파티션이라는 작은 단위로 나누어 관리하는 기법을 파티셔닝(Partitioning)이라고 한다.장점특정 파티션만 조회하면 되기 때문에 검색 속도가 빨라진다.인덱스 크기가 작아져 효율이 증가한다.데이터 양이 증가해도 파티션을 추가하여 쉽게 확장할 수 있다.백업과 복구 작업이 간편해진다. 예를 들어, 특정 파티션만 백업할 수 있다.특정 파티션만 유지보수하면 되므로 관리 부담이 줄어든다.한 파티션에 문제가 생겨도 다른 파티션은 영향을 받지 않으므로 시스템의 가용성이 높아진다.table의 partition 단위로 Disk I/O을 분산하여 경합을 줄이기 때문에 UPDATE 성능을 향상시킨다.단점설계 및 관리가 복잡해질 수 있다.적절한 파티셔닝 키를 선택하는 것이 어려울 수 있다.테이블 간 JOIN에 대한..

Database 2024.07.22

Redis 야무지게 사용하기

RedisRedis는 In-Memory 데이터 스토어다. 서버 재시작 시 모든 데이터를 유실한다. 복제 기능을 사용해도 사람의 실수 발생 시 데이터 복원은 불가능하다. 때문에 캐시 이외의 용도로 사용한다면 적절한 데이터 백업이 필요하다.단순한 key-value 구조평균 작업속도 < 1ms초당 수백만 건의 작업 가능 캐시로 사용하기캐시란?데이터의 원래보다 더 빠르고 효율적으로 액세스 할 수 있는 임시 데이터 저장소이다. 같은 데이터에 반복적 액세스가 일어날 때, 원본보다 빠른 접근 속도가 필요할 때, 변하지 않는 데이터일 때 캐시를 사용하면 효율적이다. 캐싱 전략읽기 전략 Look-Aside(Lazy Loading)레디스를 캐시로 쓸 때 가장 일반적으로 사용하는 방법으로 애플리케이션에서 데이터를 읽는 작업..

Database/Redis 2023.12.15

PostgreSQL 초기 설정

초기 접근 초기 디비 접속시 postgres 유저로 전환하여 접속하여야 한다. 먼저 접속된 유저를 바꿔주기 전에 postgres 유저의 비밀번호부터 바꿔주고 접근한다. sudo passwd postgres sudo su postgres psql 외부 접근 허용하기 postgresql.conf 파일에서 설정을 변경한다. listen_address 항목과 필요에 따라 포트 번호를 변경한다. 설정 변경후 재시작한다. sudo vi /etc/postgresql/10/main/postgresql.conf sudo service postgresql restart

Database/Postgresql 2023.08.25