Database

Sasha Park·2021년 4월 8일
0

Achievement Goals

  • 3 Tier Architecture 를 이해한다.
  • 영속성의 개념을 이해하고, 데이터베이스의 필요성을 인지한다.
  • 데이터베이스 종류를 이해한다.
  • 관계형 데이터베이스와 NoSQL의 차이를 이해한다.
  • 관계형 데이터베이스 및 NoSQL이 어떤 경우에 적합한지 이해한다.

Learn SQL

  • SQL 주요 문법을 이해할 수 있다.
  • 조회, 삽입, 갱신, 삭제 구문을 자유자재로 사용할 수 있다.
  • 조회시 다양한 조건을 걸어 원하는 정보만 조회할 수 있다.
  • 통계를 위한 쿼리를 만들 수 있다.
  • 스키마 디자인을 할 수 있다.
  • 앱에 필요한 테이블과 필드, 그리고 관계를 부여할 수 있다.
  • 1:N, N:N 관계를 이해하고, 데이터베이스에서 테이블을 조작할 수 있다.
  • Foreign Key, Primary Key에 대해 이해할 수 있다.

Cmarket Database

  • SQL을 node.js 앱에서 쿼리할 수 있다.
  • 클라이언트의 HTTP 요청에 따라 CRUD API를 구현할 수 있다. (CRUD: Create, Read, Update, Delete)

SQL (Structured Query Language)

Query: 저장되어 있는 정보를 filter 하기 위한 질문. 엑셀에 필터링에 넣는 조건을 떠올려보자. 데이터베이스에 query를 보내 원하는 데이터만을 뽑아올 수 있음.

  • In-memory: 끄면 데이터가 사라짐. 데이터가 프로그램에 의존.

  • File I/O: 원하는 데이터만 가져올 수 없고, 항상 모든 데이터를 가져온 뒤 서버에서 필터링 필요. 파일이 손상되거나 여러 개의 파일들을 동시에 다뤄야 하는 등 복잡하고 데이터량이 많아질수록 점점 버거워짐.

  • Database: 관계형 데이터베이스에서는 하나의 CSV 파일이나 엑셀 시트를 한 개의 테이블로 저장할 수 있으며 한번에 여러 개의 테이블을 가질 수 있기 때문에 SQL 을 활용해 데이터를 가져오기가 더 수월.

SQL 명령어

  • Select
  • Where
  • And, Or, Not
  • Order By
  • Insert Into
  • Null Values
  • Update
  • Delete
  • Count
  • Like
  • Wildcards
  • Aliases
  • Joins
  • Inner Join
  • Left Join
  • Right Join
  • Group By: 같은 값들을 모아 행을 만들어준다. 쓰임새는 하기와 같다.
SELECT COUNT(column), column2
FROM table
WHERE condition
GROUP BY column
ORDER BY column;

ACID

  • transaction: 계좌이체, 여러 개의 작업들을 하나의 실행 유닛으로 묶어준 것.

  • Atomicity
    하나의 트랜잭션이 전부 성공하거나 전부 실패해야 된다는 것임. 부분적으로 실행되면 안됨.

  • Consistency
    하나의 트랜잭션 이전과 이후 데이터베이스 상태는 이전과 같이 유효

  • Isolation
    하나의 트랜잭션이 다른 트랜재션과 독립.

  • Durability
    하나의 트랜잭션이 성공적으로 수행되었다면 로그가 남아야 한다는 것.

SQL vs NoSQL

  • 관계형 데이터베이스: 테이블을 사전에 정의를 한 뒤에 그에 알맞은 형태의 데이터만 넣을 수 있음. row, column

대표적인 관계형 데이터베이스에는 MySQL, Oracle, SQLite, PostgresSQL, MariaDB이 있음.

  • 비관계형 데이터베이스.

NoSQL: 데이터가 고정되어 있지 않은 데이터 베이스 형태.

  • key-value 타입: 배열 형태로 저장. Redis, Dynamo 등이 대표적인 Key-Value 형식의 데이터베이스.

  • 문서형 타입: 데이터를 문서처럼 저장. JSON 유사 형식으로 데이터를 문서화. 각각의 문서는 하나의 속성에 대한 데이터를 지니고 있고, 컬렉션이라고 하는 그룹으로 묶어서 관리. MongoDB

  • Wide-Column 데이터베이스:

  • 그래프(Graph) 데이터베이스

Schema, 스키마

데이터베이스의 '청사진' 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명.

한 column 내 data를 여러 개 넣는 것은 지양할 것.

Join table : 1대 다 table을 구현.

SQL 비밀번호 문제로 인한 접속 불가.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

password 불일치로 인한 접속 불가

이에 막강한 sudo 권한을 이용해 접속해봤으나 다음과 같은 문제 발생.

The server quit without updating PID file

  1. 파일 수정 가능한 권한을 부여를 위해 하기와 같은 커맨드 입력 후 문제 해결.

Sangwooli@Lisas-iMac ~ % sudo chown -R mysql:mysql /usr/local/var/mysql
Sangwooli@Lisas-iMac ~ % sudo chmod -R 777 /usr/local/var/mysql

  1. mysql 서버를 껐다 키자...

Sequel Pro 무한로딩 해결방법

하기 사이트를 참고하여 공홈에 있는 버젼과 다른 버젼을 설치해줄 것. (아이콘 모양이 다르다)

링크텍스트

profile
'어?' 에서 '아!'가 되는 순간을 즐기는 개발자입니다.

0개의 댓글