우아한테크코스 레벨3 프로젝트에서 JPA와 Mysql을 쓰고 있다. JPA는Transaction 단위로 동작한다. 따라서 JPA를 사용하는 입장에서 Transaction의 개념에 대해 잘 알아야 한다고 생각해 왔지만 그러지 못하고 있었기 때문에 학습을 다짐하게 됐다.(내가 아는 것이라고는 스프링에서 @Transcational을 붙이면 예외가 발생했을 때 Rollback해준다는 것 뿐...) 또한 Mysql을 예전 부터 써왔지만(그저 많이들 사용하는 것 같아서...) RDBMS의 개념도 모호한 것 같아서 곁들어 학습하기로 했다. 우선 이번 포스팅에선 RDBMS 부터 알아보는 걸로...
우선 RDBMS에 대해 알아보자.
데이터를 테이블 단위로 관리하는 테이블 기반의 DBMS이다.(Table = Relation)
그럼 DBMS란 무엇일까?
데이터베이스를 관리하는 시스템으로 데이터를 저장 및 유지 보수하고 이를 검색하는 시스템
우리가 DBMS를 사용하는 이유는
1. 데이터를 효율적으로 관리하기 위해
2. 데이터를 일회성이 아닌 영구적으로 보관하기 위해
서 이다.
위의 두가지 이유를 충족시키기 위해 테이블 기반의 DBMS인 RDBMS를 사용하는 것이라 정리할 수 있겠다. 또한 역사가 가장 오래되어, 신뢰성이 높고, 데이터의 분류, 정렬, 탐색 속도가 빠른 이유에서 많이 사용된다고 한다. RDBMS의 종류로는 Mysql, Postgresql, mariaDB등이 있다.
RDBMS이외에도 계층형, 네트워크형, 객체지향형, NoSql 기반의 DBMS가 존재한다. RDBMS가 가장 많이 사용되는 것은 사실이지만 그때 그때 처한 환경에 맞춰 적절한 DBMS를 선택해 보자.
그럼 본론으로 들어가 RDBMS의 특징에 대해 알아보자.
튜플(Tuple)
속성(Attribute)
기본키(Primary Key)
외래키(Foreign Key)
스키마(Schema)
이번에 데이터베이스의 기본인 RDBMS에 대해 간략하게 알아봤다. 이번 학습을 토대로 데이터베이스 정규화, 트랜젝션, 데이터베이스 인덱싱, 데이터베이스 락 등을 학습하여 데이터베이스에 대한 개념을 더욱 확고히 다져야겠다.