Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 유데미코리아
- sql정리
- 취업부트캠프 5기
- 스타터스부트캠프
- 그로스해킹
- 추천시스템
- 취업부트캠프
- 알고리즘
- pytorch
- 딥러닝
- NLU
- SLASH22
- AARRR
- 사이드프로젝트
- 유데미부트캠프
- 유데미큐레이션
- BERT
- 토스
- 부트캠프후기
- NLP
- 그래프
- 서비스기획
- 스타터스
- AWS builders
- 임베딩
- SQL
- 서비스기획부트캠프
- MatchSum
- 데이터도서
- 특성중요도
Archives
- Today
- Total
다시 이음
Data Engineering - SQL, DBapi 본문
안녕하세요.
이번 섹션들어오면서 이론이 많지가 않고 실습위주라 블로깅 하기가 쉽지 않네요.
간단하게만 이론을 보고 그 외에는 Trouble shooting을 하려고 합니다.
SQL(Structured Query Language)
SQL 이란?
SQL 이란 데이터베이스 용 프로그래밍 언어입니다. 한 마디로 데이터베이스에 쿼리(질의문)를 보내 원하는 데이터만을 가져올 수 있게 해줍니다.
하나의 언어인 SQL 혹은 Structured Query Language 은 데이터베이스 언어의 기준으로 주로 관계형 데이터베이스(RDB)에서 사용이 됩니다.
예를 들어 MySQL, Oracle, SQLite, PostgreSQL 등 다양한 데이터베이스에서 볼 수 있습니다.
위의 분류는 데이터베이스의 종류이며 각각 장단점을 가지고 있습니다.
관계형 데이터베이스(Relational Database)
- 데이터 : 각 항목에 저장되는 값입니다.
- 테이블 (혹은 relation) : 사전에 정의된 행과 열로 구성되어 있는 체계화된 데이터입니다.
- 필드 (혹은 column) : 테이블의 열을 가리킵니다.
- 레코드 (혹은 tuple) : 테이블의 한 행의 저장된 정보입니다.
- 키 : 테이블의 각 레코드를 구분할 수 있는 값. 각 레코드마다 고유값이어야 하며 기본키 (primary key) 와 외래키 (foreign key) 등이 있을 수 있습니다.
- 트랜잭션 : 정보의 교환이나 데이터베이스 갱신 등 일련의 작업들에 대한 연속처리단위를 의미
- 스키마(schema) 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조
ACID
데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어입니다.
- 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력입니다. 쉽게 말해 1단계가 실패하면 2단계도 실패해야하고, 2단계가 실패해도 1단계가 진행되서는 안됩니다.
- 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미합니다. 예를 들어 어느 테이블이 있을때 필드가 이름 과 나이로 정해져 있을때 하나의 값(이름 혹은 나이)을 가진 트랜잭션이 성립될 수 없습니다.
- 독립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미합니다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미합니다. 공식적으로 고립성은 트랜잭션 실행내역은 연속적이어야 함을 의미합니다.
- 지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미합니다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미합니다. 전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있습니다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있습니다.
DBapi
SQL문을 사용하여 즉시 실행 할 수 있으면서 바로 값을 확인 할 수 있는 DBeaver와 같은 SQL 클라이언트이자 데이터베이스 관리 도구가 있습니다.
그외에도 터미널 혹은 vs code와 같은 편집기에서 python을 실행하여 편집할 수도 있습니다. 하지만 이러한 경우는 결과를 확인하기가 어렵습니다.
#sqlite3 데이터베이스 편집기 연결
import sqlite3
#'test.db' 데이터베이스 생성 혹은 연결하기
conn = sqlite3.connect('test.db')
#편집하는 행을 표현하는 커서를 생성
cur = conn.cursor()
#execute 메소드를 통해 SQL문을 바로 전송
cur.execute("""CREATE TABLE test_table (
name VARCHAR(32),
age INT);
""")
#위의 execute메소드를 통해 데이터베이스 편집을 다 했다면 꼭 commit을 해주어야 반영이 됩니다.
conn.commit()
이론은 이렇게 정리만 하고 다음 포스팅에서는 SQL문 명령어와 자주 마주치게 될 상황을 해결하는 방법을 준비해오겠습니다.
'AI 일별 공부 정리' 카테고리의 다른 글
API 개발 - Docker 사용하기 (0) | 2021.10.01 |
---|---|
웹 어플리케이션 만들기(기초) (0) | 2021.09.30 |
Data Engineering - CLI, Git (0) | 2021.09.10 |
실전 예측 분석 모델링 - 5 더 알아보기 (0) | 2021.09.08 |
실전 예측 분석 모델링 - 4 Interpreting Machine Learning Model (0) | 2021.08.27 |