RDBMS
[PostgreSQL]. Python ORM(sqlalchemy)으로 데이터 삽입하기
create_table.py from sqlalchemy import MetaData, Table from sqlalchemy import create_engine import json import os from sqlalchemy import Integer, String, DateTime from sqlalchemy import Column meta = MetaData() FILE = os.path.dirname(os.path.realpath(__file__)) CONFIG = json.load(open(FILE + '/pg_test_config.json')) username = CONFIG['username'] password = CONFIG['password'] host = CONFIG['host'..
[Spark]. MySQL 연동하기 A-Z(for mac)
MySQL 데이터베이스에 연결하려면 Mysql-java-connector를 다운 받아야함. 버전의 맞게 다운로드 설치 https://dev.mysql.com/downloads/connector/j/ MySQL :: Download Connector/J MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0. dev.mysql.com 설치하고 앞축을 풀어준다. 위 파일을 mysql 폴더에 넣어주어야함. 폴더 경로 확인 MySQL Base Directory로 이동 cd /usr/local/mysql open . mysql-connecto..
[pymysql]. 파이썬 SQL 쿼리 한꺼번에 전송하기
pymysql 패키지를 사용하여 데이터 프레임에 있는 데이터를 DB에 삽입할때 ( 쿼리를 전송할 때 ) 우리는 크게 세 가지의 과정을 거친다. 첫 번째, DB 커넥트 ( DB 접속 정보를 가지고 DB와 연결하는 과정 ) 커서 객체 생성 import pymysql # data base connect db = pymysql.connect(**RDS_config, cursorclass=pymysql.cursors.DictCursor) # 커서 객체 생성 cursor = db.cursor() 두 번째, 쿼리문 작성 : 실행하고자 하는 쿼리문을 작성합니다. execute : 쿼리문을 실행시킵니다. query = """INSERT INTO {} VALUE =({},{},{})""".format(table_name,..
[SQL] Python 에서 SQL을 다루는 방법.
1. Python에서 데이터베이스에 연결하는 법 import sqlite3 # built-in library (Python 2.x & 3.x) dbpath = "chinook.db" conn = sqlite3.connect(dbpath) cur = conn.cursor() Python에서 SQL을 사용할 때에는 먼저 db와 연결해주는 connect 함수와 실제로 그 안에서 일을 하는 cursor 가 있다. * 실제로 일하는 건 cursor 가 다한다. dbpath 변수는 데이터베이스 파일의 경로를 지정하는 곳이고 파일이 없으면 새로 생성한다. 2. python 에서 SQL에 데이터를 삽입하는 방법 script = """ DROP TABLE IF EXISTS employees; CREATE TABLE em..
[SQLD] .SQL 최적화 원리 (Optimizer)
옵티마이저(Optimizer) 개발자가 SQL을 작성하여 실행할 때, 옵티마이저는 SQL을 어떻게 실행할 것인지를 계획하게 된다. 실행계획을 수립하고 SQL을 실행한다. 데이터베이스 관리시스템의 소프트웨어 동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라서 성능이 달라진다. 옵티마이저는 데이터 딕셔너리에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정한다. 옵티마이저는 여러 개의 실행 계획 중에서 최저비용을 가지고 있는 계획을 선택해서 SQL실행 예를 들어 건수가 많은 테이블을 먼저 읽고 건수가 적은 테이블을 읽으면 불필요하게 비교 횟수가 증가하게 된다. 만약 옵티마이저가 비효율적으로 실행계획을 수립하면 SQL개발자는 SQL을 개선해야한다. 실행계획을 변경하도록 요청하는..
[SQLD]. SQL 기본
계층형 데이터베이스 트리(Tree) 형태의 자료구조에 데이터를 저장하고 관리한다. 1대 N 관계를 표현한다. 네트워크 데이터베이스 오너(Owner)와 멤버(Member) 형태로 데이터를 저장한다. 1대N과 함께 M대N 표현도 가능하다. 관계형 데이터베이스 릴레이션에 데이터를 저장하고 관리한다. 릴레이션을 사용해서 집합 연산과 관계 연산을 할 수 있다. 집합연산 합집합( Union ) 두 개의 릴레이션을 하나로 합치는 것 중복된 행은 한 번만 조회된다. 차집합 (Difference) 본래 릴레이션에는 존재하고 다른 릴레이션에는 존재하지 않는 것을 조회한다. 교집합 (Intersection) 두 개의 릴레이션 간에 공통된 것을 조회한다. 곱집합 (Cartesian product) 각 릴레이션에 존재하는 모든..
[SQLD]. 데이터 모델과 성능( 정규화 , 반정규화 , 분산 데이터 베이스)
정규화 ( Nomalization ) 정규화는 데이터의 일관성과 중복을 최소화하고 유연성을 최대화 하는 방법이며 데이터를 분해하는 과정이다. 정규화를 하지 않으면 불필요한 정보가 같이 추가되는 이상현상이 발생한다. 정규화를 수행하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거된다. 정규화 절차 제 1 정규화 속성의 원자성을 확보한다. 기본키(Primary)를 설정한다. 기본키가 1개가 될 수 있고 2개가 될 수 있다. ( 기본키는 유일성이 만족되어야한다.) 제2 정규화 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거(분해)한다. 기본키로 설정한 칼럼이 함수적으로 종속(부분 함수 종속성이 발생)하고 있다면 분해해야한다. 제3 정규화 기본키를 제외한 칼럼 간에 종..
[SQLD] 데이터 모델링의 이해(1)
데이터 모델링의 주요 특징 추상화 ( Abstraction ) 현실 세계를 간략하게 표현한다. 단순화 (Simplification) 누구나 쉽게 이해할 수 있도록 표현한다. 명확성 (Clarity) 명확하게 의미가 해석되어야 하고 한 가지 의미를 가져야 한다. 데이터 모델링 절차 개념적 모델링 - > 논리적 모델링 -> 물리적 모델링 데이터 모델의 3가지 관점(View) 데이터 비즈니스 프로세스에서 사용되는 데이터 - 구조 , 정적 프로세스 비즈니스 프로세스에서 수행하는 작업 - 시나리오 , 도메인 , 동적 데이터와 프로세스 프로세스와 데이터 간의 관계 - CRUD 데이터 모델링시에 고려사항 데이터 중복, 비유연성, 비일관성이 발생하지 않게 해야한다. ERD 작성 순서 엔터티를 도출하고 그린다. 엔터티를..
[SQL] 기본 쿼리문 ( SELECT , WHERE , INSERT , UPDATE , DELETE ,ORDER BY)
SQL 공부하기 좋은 사이트 https://www.w3schools.com/sql/default.asp SELECT : 데이터베이스를 불러오는 기능을 한다. 형식 : SELECT column_name, column_name2... FROM table_name; - table_name 안에 있는 column_name(항목이름) 을 불러온다. SELECT * FROM table_name; - table_name 전체를 불러온다. DISTINCT : SELECT 와 함께 사용되며 중복되지않는 유일한 값만 불러오는 기능을 한다. 형식 : SELECT DISTINCT column_name, column_name2... FROM table_name; 예제 : SELECT DISTINCT city FROM Custo..