Cloud Native/Database(6)
-
ORM (Object Relational Mapping) w/ Pydantic and SQLAlchemy
ORM ? ORM은 객체를 DB로 mapping 해 주는 것 객체 모델과 관계형 모델간의 불일치를 자동으로 매꿔줌 장점 객체 지향적인 코드가 바로 DB로 저장될 수 있음 보다 직관적이며 business logic에 focus 할 수 있음 재사용 및 유지보수에 용이함 객체 간의 관계로 query를 자동으로 생성하여 RDBMS의 data 구조와 Java 객체 모델 간 간격을 줄임 단점 성능상의 문제가 발생할 수 있음 DBMS의 "특징을 활용한" 최적화가 어려움 객체지향적인 사고로만 ORM을 설계할 경우 DB의 파편화가 심해져 성능의 문제, 복잡도를 야기할 수 있음 어떤 table에 묶여서 저장될 수 있는 것도 객체지향에서는 여러 객체의 composition으로 모델링 될 수 있음 Sqlalchemy의 ORM..
2022.05.06 -
master table, transaction table
마스터 테이블 transaction에 참고되는 데이터를 저장하는 테이블 e.g., 고객 테이블 고객 테이블 # 고객 ID 성명 주소 트랜잭션 테이블 끊임없이 생성되는 데이터 e.g., 거래 내역 테이블 거래 내역 테이블 # 거래 ID 고객 ID
2022.04.30 -
개념적 모델링, 논리적 모델링
개념적 모델링 논리적 모델링 entity table attribute column UID Primary key Relationship Foreign key Mandatory NOT NULL Optional NULL 개념적 모델링 -> 논리적 모델링 개념적 모델링을 통해 산출된 ERD를 DBMS가 처리 가능하도록 객체화 분석 내용을 통해 -> 개념적 데이터 모델링 진행 -> ERD 산출 ERD -> 논리적 데이터 모델링 진행 -> DB 설계 개념적 모델링 1) entity를 식별(찾음) 2) attribute를 찾음 3) '#' 즉, UID를 찾음 4) 관계를 맺음 1) entity 식별 다양한 요구사항을 통해 수집된 내용에서 "명사"와 "부사"를 차음 명사가 entity 부사가 attributre OOD..
2022.04.30 -
정규화
정규화란? 불필요한 속성의 제거 및 변경 Entity의 추가 정규화 이유 중복 제거 단순화 정상적인 관계 확보 정규화 종류 1) 제 1 정규화 모든 속성은 반드시 하나의 값을 가짐 -> 중복되지 않음 2) 제 2 정규화 모든 속성은 UID에 종속 제 1 정규화 '주문' table 주문 # 주문번호 # 항목번호 * 고객명 담당사원명 ... 선적유무 records들 주문번호, 항번, 고객명, ... 선적유무, ... 45 1 A Y ... 45 2 A Y 45 3 A ... 주문번호와 항번의 조합은 unique 고객명, 담당사원 등은 중복 위와 같은 entity 설계는 데이터의 '중복'을 발생 이런 중복을 지양해야 함 중복의 문제 - 공간의 낭비 - 중복된 연산 중복의 발생은 하나의 record에 다 모여 ..
2022.04.30 -
PostgreSQL
About PostgreSQL 1) ORDB PostgreSQL은 Relational Database 입니다. 관계형 자료를 저장하는 DB입니다. 그런데 정확히는 RDB라기 보다는 ORDBMS 입니다. 즉, 객체 지향 DB이며, 저장을 객체 단위로 수행한다는 차이가 있습니다. Enterprise 급 DBMS의 기능을 제공합니다. 2) Open source PostgreSQL은 MySQL 처럼 open source SQL solution 입니다. 그런데, MySQL이 Oracle로 인수된 후 premium 기능을 사용하려면 비용을 지불하게 된 것과 달리 PostgreSQL은 여전히 open source 입니다. 3) SQL coverage PostgreSQL은 ANSI SQL 표준을 가장 많이 준수하고 구..
2022.01.11 -
GraphQL
About GraphQL GraphQL은 REST API의 한계점을 해결하고자 나온 통신 규약입니다. 그러나 상세한 입맛에 맞는 구현이 이뤄져야 하며, 사용하는데 있어서도 어느 정도의 시간이 필요합니다. Facebook에서 만든 query language 입니다. QL이라는 suffix가 붙어 있어서 SQL과 유사할까 하는 생각이 들지만, 그렇지는 않습니다. GraphQL 데이터를 서버에어 효율적으로 가져오는 것이 목적 즉, query 문이 client에서 작성됩니다. 특정 통신 방식 및 저장 방식에 종속적이지 않습니다. SQL DB에 저장된 데이터를 효율적으로 가져오는 것이 목적 즉, query 문이 server에서 작성됩니다. GraphQL 특징 GraphQL로의 통신은 보통 HTTP POST met..
2022.01.10