본문 바로가기

Research/Database15

스키마(Schema)와 모델(Model)의 차이 mongoDB에는 '스키마'와 '모델' 개념이 쓰인다. 비슷해 보이는 두 개념의 차이를 알아보자. 스키마 스키마는 도큐먼트의 각 필드의 형식을 정의한 객체다. 예를 들어, 글 제목은 문자열, 날짜는 날짜 형식으로 하는 식으로 말이다. {title: String, date: Date, ...}. 스키마는 일종의 메타 정보, 더 쉽게 말하면 도큐먼트의 설계도라 할 수 있다. 모델 설계도를 이용해서 실제하는 것을 만든다. 모델이 바로 그런 것이다. 모델은 스키마를 사용하여 만든 인스턴스다. 이 인스턴스에는 기능적이기 때문에 데이터베이스를 조작할 수 있는 함수들이 포함되어 있다. 정리 스키마는 일종의 설계도이고, 모델은 스키마로 만든 인스턴스다. 2023. 11. 1.
데이터베이스 정규화(Normalization) 정규화(Normalization)란 데이터베이스 정규화(Database Normalization)는 데이터 중복(data redundancy)를 줄이는 방향으로 DB의 속성(attribute)를 조직해 나가는 프로세스다. 정규화는 데이터를 쪼개서 데이터 중복 문제를 해결하는 방식이다. 왜 데이터 중복을 줄여야 할까? DB를 비효율적으로 사용하기 때문이다. 게다가 CRUD 작업을 할 때 데이터가 1개가 아니기 때문에 한쪽만 바뀌게 되는 일관성 문제도 야기한다. 데이터를 쪼개는 이유 불필요하거나 중복 데이터(data redundancy)를 제거하기 위해 이상현상(Anomaly)를 방지하기 위해 데이터를 논리적으로 저장하기 위해 정규화와 비정규화의 장단점 비교 정규화 : 중복을 최소하여 무결성을 확보하기 .. 2023. 3. 23.
postgres_row count 성능 개선 방법 -- 일반 explain analyze select count(*) as exact_count from "Bid" b; -- 빠른 것 explain analyze select reltuples from pg_catalog.pg_class c where c.relname = 'Bid'; postgres 메타 데이터로 보이는 것에서 reltuples를 바로 가져오면 된다. 일반 쿼리로 실행했을 경우 QUERY PLAN | -----------------------------------------------------------------------------------------------------------------------------------------+ Finalize Aggregate (cos.. 2023. 3. 13.
Postgres_index로 가지고 놀기 프로젝트의 DB에 데이터를 가져와서 활용할 수 있는 아이디어를 한번 찾아보자. 총정리 -- 전체 데이터 중 5개만 추출. select * from "Bid" limit 5; -- 전체 로우 카운트 개수 세기. select count(*) from "Bid"; -- 컬럼이름 가져오기. select column_name from information_schema.columns where table_name = 'Bid' -- 전체 데이터 조회. explain analyze select * from "Bid"; -- 특정 가격대 bid 조회. explain analyze select * from "Bid" b where b."bidPrice" > 370000 and b."bidPrice" < 40000; --.. 2023. 3. 9.