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 모델을 사용하는 데이터베이스는 복잡한 데이터의 일관성보다 가용성을 선호한다.