이번 팀스터디는 한 주동안 진행할 주제와 계획을 미리 첫날에 끝내고,
순차적으로 진행하여 더 깔끔하게 마무리 할 수 있었던 것 같다.
데이터베이스 쪽은 많이 몰라서 스마트한 팀원들의 도움이 더 감사했던 것 같다.
데이터베이스
DBMS
⇒ 데이터베이스 관리시스템, 실질적인 데이터베이스를 구현할수있는 것으로,
(예로 mySQL, postgreSQL, mongoDB 등이 DBMS이다.)
하지만 편의상 DBMS솔루션, 데이터베이스, 데이터 등을 묶어서 데이터베이스라고 혼용한다고 한다.
데이터베이스의 필요성
⇒ 데이터를 조직화하면 더 효율적으로 관리할수있다.
그리고 이 데이터를 조직화하는 방식은 여러가지가 있고 방식에 따라 데이터베이스 유형을 구분할 수 있다.
관계형 데이터베이스 vs 비관계형 데이터베이스
관계형 데이터베이스
등장배경
1970년대에 빠른 IT의 발달로 대규모 데이터 처리와 효율적인 관리의 필요성.
IBM의 연구원인 에드거 F.codd 라는 사람이 처음으로 제안했다고 함.
“테이블형태로 조직화하고, 테이블간 관계를 통해 데이터를 관리하자!”
⇒ 데이터 중복 감소, 무결성 유지
⇒ 테이블간의 관계를 직관적으로 파악할수있다.
사전에 엄격하게 정의된 스키마가 있어, 행과 열로 구성된 테이블 기반으로 데이터의 관계를 관리하는 데이터베이스
⇒ MySQL, Oracle, SQLite, mariaDB, PostgreSQL
관계형 DB를 SQL이라고 부르는 이유는? ⇒ 위에 나옴
테이블의 관계가 구조화된 데이터 모음이라 SQL
즉, 구조화된 쿼리 언어(Structured)를 쓸수있어서 대충 그렇게 부름.
기존의 SQL기반 관계형 DB는 데이터의 양과 복잡해지는 데이터 구조를 처리할 수 있는 능력이 줄었다..
RDBMS의 한계점
- 수직적확장(서버의 하드웨어 성능향상 만으로 처리능력 늘리려는 방법) ⇒ 비용면에서 감당X
- 조인연산 ⇒ 복잡하고, 비용면에서 어려움
- 스키마 ⇒ 유연성X, 데이터 구조가 자주바뀌는 경우 관리 어렵다.
사전에 엄격하게 정의된 스키마가 없어서 유연하고, 확장가능한 NoSQL이 각광받게된 이유다.
NoSQL 특징
- 수평적 확장 (필요할 때마다 서버를 추가하여 분산시킴으로써 성능 향상) ⇒ 비용 저렴하다.
- 유연하다. => 엄격하게 정의된스키마 X (비정형 데이터 다루기에 용이)
- 대규모 분산 데이터 센터에서의 빅데이터 및 실시간 웹애플리케이션 위해 설계됨.
종류
- 문서지향 (MongoDB)
⇒ document자체가 schema가 되어 값을 문서로 저장한다. JSON, XML형태로.
- 키-값 (Redis)
- 컬럼기반 (Cassandra)
- 그래프 (Neo4j)
MongoDB, CouchDB에서 사용하는 쿼리 언어는 서로 다르다.
⇒ 하지만 SQL이 아니므로 그냥 묶어서 NoSQL(Not only)이라고 부른다고한다.
⇒ 구체적인 정의는 없다고한다.
RDBMS | NoSQL | |
---|---|---|
구조 | 레코드 - 테이블 - 데이터베이스 | (MongoDB) 도큐먼트 - 컬렉션 - 데이터베이스 |
스키마 | 엄격 | 유연 |
데이터 저장방식 | 테이블 | 문서, 키-값, 그래프 등 |
쿼리언어 | SQL | 각 솔루션마다 다르다. |
확장성 | 수직적 | 수평적 |
활용 | 정합성이 요구되는 애플리케이션 | 대규모 분산 처리, 비정형 데이터 다룰떄 |