Welcome! 🙋‍♂️ View more

Engineering 💻/DB 4

[MongoDB] Timezone(타임존) 문제와 해결 (feat.Python)

Mongo DB는 Time zone이 UTC로 고정되어 있다. 따라서 Mongo DB에서 데이터를 불러올 때, Date 형식의 변수 값이 다를 수 있다. 필자의 경우, pymongo를 통해 데이터를 입력할 때는 정상적으로 되었으나, 추후 Spark를 통해 데이터를 읽어왔을 때 문제가 생겼다. 🤔 문제 필자는 네이버 종목토론방의 정보를 다루는 중이라서 이를 예시로 들겠다. 살펴보면 시간대가 9시간이 차이나는 것을 알 수 있다. 🤔 이러면 Date로 필터링할 때, 엄청난 혼선을 겪을 수 있다. 필자가 그랬다... 생각해보면 Pyspark에서 불러올 때 MongoDB의 시간대는 UTC이고, Pycharm 환경의 시간대는 한국(UTC+9)임으로 자동으로 9시간을 더한 것 같다. 그래서 이를 해결하기 위해서 이것..

Engineering 💻/DB 2022.02.19

[DB] Index란 (feat. B+-Tree)

DB의 성능 DB는 많은 사람들이 공통으로 사용하는 데이터 모음이기 때문에, 대량의 데이터가 조회/저장되는 일이 빈번하게 발생한다. 그리고 이를 빠르게 진행하는 것이 무엇보다 중요하다. 이때 DB의 성능과 관련된 핵심이 디스크 I/O를 어떻게 줄이느냐이다. 디스크 I/O = 플래터(원판)을 돌리고, 디스크 헤더를 이동하여 데이터를 읽는 것을 의미한다. 물론 순차 I/O가 랜덤 I/O보다 빠르다. 하지만 현실은 대부분 랜덤 I/O이며, 이를 순차로 바꾸어 보자는 아이디어에서 Index와 쿼리 튜닝이 나타났다. Index란? Index란 추가적인 저장 공간을 활용하여 DB 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 만약 DB 테이블의 모든 데이터를 검색해서 원하는 결과를 가져오려면 시간이 오래 걸릴..

Engineering 💻/DB 2022.02.13

[PostgreSQL] Python에서 다중 행을 Insert하는 다양한 방법과 비교

🤔 Python으로 DB에 데이터를 입력할 때, 다중 행을 입력하는 경우가 많을 것이다. 이를 어떻게 실행해야 가장 빠르게 입력할 수 있을까? 😀 이러한 고민에 3가지 방법을 실행해봤고, 각 방법이 시간이 어떻게 차이나는 지 공유해보고자 한다. 먼저 입력할 데이터와 DB를 연결하자. 사용될 데이터는 10만개의 행과 3개의 열을 가진 Integer 데이터를 사용할 것이다. DB는 PostgreSQL로 구축한 DB를 활용할 것이다. import time import psycopg2 N = 100000 data = [(i,i,i) for i in range(N)] print('data length: ', len(data)) #10만개의 행 db = psycopg2.connect(host='localhost',..

Engineering 💻/DB 2022.02.10

[DB] 데이터베이스 기초

데이터베이스란? 데이터베이스란 여러 사람들이 공유하고, 사용될 목적으로 통합하여 관리되는 데이터의 집합 데이터 베이스를 사용하기 이전에는 파일 시스템을 이용하여 데이터를 관리했다. 이렇게 저장된 파일들을 업무에 사용할려고 하니... 각 데이터가 중복에다가 형태가 다르다는 문제가 발생하게되었다. 이러한 파일 시스템의 단점을 극복하기 위해서 나타난 시스템이 데이터베이스(DB)이다. 데이터베이스의 특징 1. 데이터의 독립성 하위 단계의 데이터 구조가 변경되더라도 상위 단계에 영향을 미치지 않는 속성 > 3-스키마 구조를 통해 구현 파일 시스템의 응용 프로그램과 데이터가 상호 밀접하게 연결되어있다. 논리적 독립성: 응용 프로그램에 영향을 주지 않고, DB 논리적 구조를 변경할 수 있는 능력 / 많은 응용 프로그..

Engineering 💻/DB 2022.01.10