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
- 백엔드로드맵
- 회고록
- String
- 코드스테이츠 #회고록
- 롤중독
- 몰입학습 #몰입
- WSL #Linux #ubuntu
- 시작 #꾸준히 #과하지않게
- 회고 #주간회고
- 회고
- 회고록_코드스테이츠
- Java환경
- 피드백
- 인터넷 #ISP
- OOP
- 코드스테이츠 #
- WSL2 #권한
- jvm
- 에러해결
- Git #회고록
- 정리글 작성법
- JAVA기본
- git #intellij
- 호스트주소 #Host주소
- 코딩테스트
- 네트워크 기초
- 사용자계정 #WSL2
- 공부방식
- 글 foramt
- mapstruct
Archives
- Today
- Total
느리더라도 꾸준히
회고록(24)- SQL 본문
1. 데일리 일기
네트워크에 비해 오늘 배운 SQL은 그다지 어렵지 않았다. 기초적인 문법만 배웠기때문에 오랜만에 저녁시간이 남을 수 있었다.
네트워크 부분들이 한번에 배우다보니 혼선들이 조금있는거 같아서, 블로그에 하나씩 정리해볼 예정이다. 일단 오늘 하나부터 시작하자.
2. 오늘 배운 내용
RDBMS
정의
- 정보를 테이블, 행, 열의 정보로 구조화 하여 보관하는 방식이다. 조인 기능을 통해 여러 정보간의 관계를 나타낼 수 있다.
왜 사용할까?
인 메모리 방식은 프로그램이 종료되면 메모리도 종료되어 초기화 되는 단점이 있다.
File I/0 는 파일 자체를 옮겨야하는 단점이 있으며, 대용량 파일일 수록 관리가 힘들다.
RDBMS 에서는 하나의 파일을 테이블의 형태로 저장한다. 그리고 SQL을 활용해 한번에 여러개의 테이블에 접근할 수 있으므로 필요한 데이터를 불러오기 수월하다.
SQL
정의
- Structured Query Language로 구조화된 질의문 으로 관계형 데이터베이스에서 사용하는 언어이다.
쿼리란?
- 저장되어있는 정보를 필터링해서 가져올수 있도록 해주는 질의문이다.
NOSQL
정의
- 비관계형 데이터베이스에서 사용하는 언어이다.
특징
- key-value 타입의 데이터 베이스
- 문서형 데이터베이스
- Wide-column 데이터베이스
- 그래프 데이터베이스
SQL과 NOSQL의 차이점
SQL, NOSQL 순서로 작성함.
- 데이터 저장 방식
- 테이블형식 vs key-value, 문서, graph, wide-column
- 스키마
- 스키마 형식에 따름 vs 동적으로 스키마를 관리함.
- 쿼리
- 구조화된 쿼리언어 SQL을 사용 vs 구조화되지 않은 쿼리언어로 데이터를 요청
- 확장성
- 수직적 구조로 확장(잡아먹는 리소스(비용, 시간)가 크다.) vs 수평적 구조로 확장(잡아먹는 리소스가 작다.)
SQL과 NOSQL 활용 케이스 비교
SQL
- 데이터베이스가 ACID 성질을 준수하는 데이터일때
- 데이터가 규모있는 서버를 필요로 하지 않고 구조적이고 일관적일때
NOSQL
- 데이터의 구조가 거의 없으며, 대용량 데이터를 사용할때
- 클라우딩 컴퓨팅 및 저장공간을 최대한 활용해야 할때 확장이 용이하므로 저렴한 비용으로 가능하다.
- 빠르게 서비스를 구축해야하고 데이터 구조를 자주 업데이트 하는경우
사실 위의 장단점들을 모아서 둘다 요구 사항에 맞게 사용하는 것이 중요하다.
트랜잭션
트랜잭션이란
- 여러개의 작업을 하나로 묶어놓은 단위를 말한다.
트랜잭션을 사용하는 데이터베이스는 ACID 성질을 가지고 있다.
ACID
- Atomicity(원자성) : 트랜잭션 속 여러 작업들중 하나라도 실패하면 실패라고 간주한다.(데이터 보호를 위함)
- Consistency(일관성) : 트랙잭션 이전과 이후로 데이터베이스의 상태가 이전과 똑같아야한다.
- Isolation(고립성) : 각각의 트랙잭션은 독립적으로 진행되어, 트랙잭션 끼리는 서로의 작업을 알지못한다. 그러므로 두 트랜잭션을 연속해서 실행했을때와 결론이 같아야한다.(영향을 서로 주지않아야한다.)
- Durability(지속성) : 성공한 트랙잭션은 성공한 기록을 log로 남겨 영구적으로 보관해야한다. 만약 서버에 문제가 생기더라도 로그는 남아있어야한다.
쿼리동작 순서
- from
- on
- join
- where
- group by
- having
- select 및 select의 statement
- order by
혼자 공부로 새로 알게 된 내용
- SQL은 대소문자를 딱히 구분하지 않았다.
- delete 명령어는 레코드 기준, (drop, alter ) 명령어는 테이블 또는 column 기준으로 동작한다.
- where의 문자열이 올경우 ' ' 또는 " "를 붙여야한다.
- where의 between은 알파벳 순으로 레코드를 가져와 주기도 한다.
'(CodeStates)Daily memoir' 카테고리의 다른 글
회고록(26) - Spring Framework의 특징 (0) | 2022.12.07 |
---|---|
회고록(25) - 스키마 (0) | 2022.12.02 |
회고록(23) - REST API (0) | 2022.12.01 |
회고록(22) - 네트워크, 웹, HTTP + @ (0) | 2022.11.30 |
회고록(21) - 코딩테스트 준비 (0) | 2022.11.24 |
Comments