본문 바로가기

개념 공부/DBMS5

[Redis] Redis 데이터의 영구 저장(RDB, AOF) Redis PersistencyRedis는 인메모리 DB이지만, 데이터를 디스크에 영구 저장 할 수 있는 특징이 있다.그래서 Redis가 restart되더라도 디스크에 저장해놓은 데이터를 다시 읽어서 메모리에 로딩하기 때문에 데이터가 유실되지 않는다. Redis에는 데이터를 저장하는 방법이 RDB(snapshotting) 방식과 AOF(Append only file) 두가지가 존재한다. RDB(snapshotting)특정 시점에 메모리에 있는 모든 데이터를 바이너리 파일로 저장하는 방식이다.이는 개발자가 직접 세팅하지 않아도 자동으로 .rdb라는 확장자의 파일에 인메모리 데이터를 저장하도록 기본으로 설정돼있다. 이 방식은 특정 시점으로 데이터를 복구하는 것이 가능하며, 레디스 데이터의 버저닝 또한 가능하.. 2024. 12. 10.
[DBMS] 트랜잭션(Transaction)이란 트랜잭션쪼갤 수 있는 업무의 최소 단위데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위상태를 변화시킨다는 것은 SQL 쿼리문을 통해 DB에 접근하는 것이다.위에 써놓은 것을 좀더 풀어서 설명하면 작업단위란 쪼갤 수 있는 업무의 최소 단위를 의미하는데, 그 작업 단위는 여러 개의 SQL 쿼리문을 사람이 정하는 기준에 따라 묶어놓은 것이다.📌 Ex)게시판을 구현한다고 가정하자.게시판에 글을 올리고, 다시 게시판 메인으로 돌아오면 내가 올린 글을 볼 수 있는 기능을 구현하고 싶다.그러면 이 작업을 위해서 필요한 SQL 작업은 아래와 같다.올리기 버튼을 누른다. : INSERT문을 사용해서 사용자가 올리려고 하는 게시글 데이터를 DB에 저장한다.게시판 새로 구성: SELECT 문으로 최신 정보를 유지한.. 2024. 9. 2.
[Beyond SW / 7일차 복습 - 2] 정규형, DB Dump 실습 정규화정규화란 관계형 스키마를 더 좋은 구조로 정제해 나가는 과정입니다.이 포스트에서는 1, 2, 3차 정규형에 대해서만 다뤄보고자 합니다.  1차 정규화(도메인 분해)모든 컬럼이 하나의 값만 갖도록 데이터베이스가 설계되어 있다면, 그 설계는 1차 정규형이라고 합니다.즉 아래와 같은 설계는 1차 정규화가 되지 않은 것입니다.사진 출처: https://www.youtube.com/watch?v=FYDHJbIwm5Y이런 경우, topic 테이블과 tag 테이블을 따로 분리하고, topic과 tag 사이에 정션 테이블(교차 테이블)을 추가해줌으로써 하나의 컬럼이 하나의 값만 가지도록 풀어줄 수 있습니다.  2차 정규화(부분 종속 제거)기본키가 아닌 모든 속성이 기본키에 완전 함수 종속된 상태를 의미합니다.즉,.. 2024. 5. 26.
[Beyond SW / 7일차 복습 - 1] 데이터모델링 데이터모델링데이터 모델링이란 구축할 DB 구조를 약속된 표기법에 의해 표현하고 설계해 나가는 과정을 의미합니다.데이터모델링의 단계개념적 데이터 모델링논리적 데이터 모델링물리적 데이터 모델링개념적 데이터 모델링다이어그램을 통해 데이터베이스 구조를 시각화이 단계는 추상화된 DB 구조를 그리는 것이므로 생략이 가능합니다.사각형: 엔터티원: 속성마름모: 관계논리적 데이터 모델링구체적으로 데이터베이스를 설계합니다.각 데이터의 타입, 관계, key 등을 지정합니다.erd cloud, draw.io, mysql 워크벤치 등의 툴을 써서 ERD를 그릴 수 있습니다.엔터티: (엄밀히 말하면 다르지만,) DB의 한 테이블을 엔터티라고 생각하면 됩니다.ERD: 엔터티 간의 관계를 표현하는 다이어그램입니다.DB 설계에서 가장.. 2024. 5. 22.
[DBMS] 트랜잭션 격리 레벨(isolation level) 트랜잭션 격리 레벨이란?트랜잭션 격리 레벨(isolation level)이란 동시에 여러 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타내는 것입니다.즉 다르게 말하면 ⭐️여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것입니다.트랜잭션의 격리 수준에는 아래 4가지가 있습니다.READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE아래로 갈수록 트랜잭션 간의 고립 정도가 높아지고 성능이 떨어집니다.일반적으로 READ COMMITED나 REPEATABLE READ 중 하나를 사용한다고 합니다.(대표적으로 mysql, mariadb는 REPEATABLE.. 2024. 5. 18.