Backend
데이터베이스
- 여러 사람이 공유하여 사용할 목적으로 체계화해 통합 관리하는 데이터의 집합을 말한다.
- 앱을 만들었을 때 유저를 추가하는 등의 POST 요청은 그 당시에는 데이터가 추가되지만 서버를 다시 시작하면 생성한 데이터가 없어지게 되고 이를 영구적으로 보관해준다.
- 데이터베이스는 데이터를 정리함에 있어 중복을 최소화할 수 있고 공유가 간편하다는 장점이 있다.
- 데이터베이스는 전문가가 필요하였지만 클라우드 서비스나 기타 플랫폼을 통해 이를 대체할 수 있고, 데이터 백업과 복구가 어렵다는 단점이 있다.
DBMS (Database Management System)
- 데이터베이스를 관리하고 운영하는 소프트웨어로, 소프트웨어를 사용하여 데이터를 저장하고 검색하는 기능을 제공한다.
DBMS 종류
- 계층형, 네트워크형, 관계형, 객체형 등이 있으며, 주로 관계형(RDBMS, Releational DBMS)를 주로 사용한다.
- 대표적인 RDBMS에는 Oracle, MySQL, PostgrSQL 등이 있다.
RDBMS
SQL vs NoSql
- RDBMS는 SQL, NoSql 크게 두 가지로 나눌 수 있다.
NoSQL
의 공통적인 특징은 스키마 없이 동작한다는 점이다.- 따라서 데이터 구조를 미리 정의할 필요가 없으며, 시간이 지나더라도 언제든지 바꿀 수 있기 때문에 비형식적인 데이터를 저장하는 데 용이하다.
- 하지만 이는 데이터베이스가 스키마를 직접 관리하지 않는 것을 의미할 뿐, 데이터 타입에 따른 암묵적인 스키마는 존재한다.
- 이 때문에 단일 값에 대한 데이터 타입 불일치가 발생할 수 있다.
- 예를 들어, 필드의 이름을
Quantity
라고 정해고, 앞으로 저장할 때Quantity
라고 저장하겠다는 암묵적인 스키마가 된다.- 하지만
quantity, qty, QUANTITY
등으로 저장할 수 있으며 새로운 필드가 추가되는 것이나 마찬가지다. - 데이터베이스가 암묵적인 스키마에 대해 전혀 알지 못하며, 이를 강제하기에 발생한 일이다.
- 하지만
SQL
- SQL (Structured Query Language),시퀄 또는 에스큐엘로 발음하며 데이터에 접근하여 데이터를 컨트롤하게 해준다.
- SQL은 언어이지만 표준이기도 하며 대부분의 RDBMS(Oracle, MySql, SQL server 등)에서 SQL표준을 준수하고 있다.
- RDBMS는 데이터베이스 관리 시스템이며, SQL은 RDBMS의 데이터와 통신하는 데 사용되는 언어다.
NoSql
Not only SQL
로, SQL만을 사용하지 않는 데이터베이스 관리 시스템을 지칭하는 단어이다.- NoSQL이 No RDBMS를 의미하지는 않는다.
- 관계형 데이터베이스를 사용하지 않는 의미가 아닌 여러 유형의 데이터베이스를 사용하는 것이다.
- MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 전혀 다르지만, 이 두 쿼리 언어는 같은 NoSQL 카테고리에 속한다.
- 빅데이터가 등장하며 데이터 처리 비용이 증가하게 되었고, 데이터 수직 처리를 사용하는
SQL
와 반대로 수평처리를 하는NoSQL
이 등장했다. - 따라서
SQL
은 기존의 컴퓨터를 업그레이드 하기 위해 더 좋은 컴퓨터로 바꿔야 하는 반면,NoSQL
은 사용하던 컴퓨터에 다른 부품이나 악세사리를 더하는 방식처럼 사용하던 것에 새로운 노드 또는 시스템을 더해 분산 저장을 지원하여 보다 적은 데이터 처리 비용이 발생한다. SQL
과 달리 스키마가 유동적으로 정해지기 떄문에, 더 빠르고 즉각적인 요구사항 반영이 이뤄져야 하는agile
기법에 적합하다.- 스키마는 데이터베이스의 구조와 조건에 관한 전반적인 명세를 기술한 집합이다.
ACID vs BASE
ACID
- Atomic : 모든 작업이 성공하거나 모든 작업이 롤백되며 부분 성공을 허용하지 않는다.
- Consistency(일관성) : 각 트랜잭션은 데이터베이스를 하나의 유효한 상태에서 다른 상태로 이동해야 하며, 트랜잭션은 데이터베이스를 일관성 없는 상태로 둘 수 없다.
- Isolation(격리) : 트랜잭션이 서로 간섭할 수 없다.
- Durabillity(지속성) : 트랜잭션 적용 결과는 실패가 있더라도 영구적이다.
ACID 모델의 주요 특징은 일관성이며, 완료되면 데이터가 일련되고 안정적이다.
BASE
- Basically Avaliable : 모든 사용자과 커리를 수행할 수 있으며, 여러 시스템에 데이터를 분산하므로 오류가 발생하는 경우 데이터베이스가 완전 중단되진 않는다.
- Soft State : 데이터베이스 상태는 시간에 지남에 따라 변경될 수 있다.
- Eventually Consistent : 시스템이 작동하고 충분히 오래 기다리면 데이터가 결국 일관성을 갖게 된다.
BASE 모델을 사용하는 데이터베이스는 복잡한 데이터의 일관성보다 가용성을 선호한다.