본문 바로가기

전체 글

무결성 데이터의 무결성(Data Integrity)은 데이터베이스에서 데이터의 정확성, 일관성, 유효성을 보장하는 것을 말한다. 데이터의 무결성은 데이터베이스의 신뢰성과 성능에 큰 영향을 미치기 때문에 데이터의 무결성을 유지하기 위해 데이터베이스 관리 시스템(DBMS)에서는 아래와 같은 무결성 제약 조건(integrity constraints)을 사용한다. 개체 무결성(Entity Integrity): 테이블의 기본 키(primary key)에 관한 무결성 규칙이다. 개체 무결성을 통해 기본 키 값이 유일하고, NULL 값이 아님을 보장해준다. 이를 통해 테이블에서 각 행을 고유하게 식별할 수 있습니다. 참조 무결성(Referential Integrity): 외래 키(foreign key)를 사용하여 두 테이블.. 더보기
트랜잭션 트랜잭션(Transaction)은 데이터베이스에서 데이터를 처리하는 논리적인 작업 단위다. 트랜잭션은 일련의 하나 이상의 데이터베이스 연산(예: 삽입, 갱신, 삭제, 조회 등)으로 구성되며, 모든 연산이 성공적으로 완료되거나 완료되지 않은 상태로 되돌릴 수 있다. 이를 통해 데이터베이스의 일관성과 무결성을 보장해준다. 트랜잭션의 특징은 원자성, 일관성, 독립성, 지속성 이렇게 묶어서 ACID 특징이라고 불린다. 1. 원자성(Atomicity) - "All or NOTHING" 트랜잭션 내의 모든 연산은 완전히 실행되거나, 아예 실행되지 않아야 된다. (어중간하지 않는다, 단호박) 트랜잭션 중 하나의 연산이 실패하면 전체 트랜잭션이 취소되고 이전 상태로 되돌린다. 2. 일관성(Consistency) 트랜잭.. 더보기
ERD(객체관계도) 관계형 데이터베이스를 구축할 때 가장 기초적인 뼈대 이다. 수많은 선배개발자들은 서비스 구축할때 이것을 최우선으로 신경써야된다고 말하며, 이것을 신경 쓰지 않는다하면 스펀지마냥 구멍투성이나 다름없다고 한다. ERD가 관계형 DB에 중요한 이유는 ERD가 작성되는 것이 시스템의 요구 사항을 기반으로 작성되는 것이 첫째요, ERD가 있어야 데이터베이스의 구축에 필요하기 때문이 두번쨰이다. 데이터베이스를 구축한 이후에도 디버깅 혹은 재설계 작업을 할 경우 설계도 역할을 해주기 때문에 꽤나 중추적인 부분이다. ERD가 잘 설계되면 문제는 없겠다만, 사람이 디자인하는 이상 실수는 불가피할수 밖에 없다. 이걸 해결해주기 위한 것들 중 하나가 정규화 과정이다. 정규화는 데이터베이스 설계 과정에서 중복 데이터를 최소화.. 더보기
Database(1) DataBase: 데이터를 모아 구조적으로 통합해 놓은 것을 말한다. 여기서 데이터란? 간단명료하게 얘기하면 자료다. 현재 운영되는 방식 오늘날 운영되고 있는 가장 일반적인 유형의 데이터베이스에서 데이터는 일반적으로 처리 및 데이터 쿼리를 효율적으로 수행하기 위해 일련의 테이블에서 행과 열로 모델링되고 있다.(데이터에 액세스 및 관리 등을 용이하게 해준다.) 대부분의 데이터베이스는 데이터 작성 및 쿼리에 SQL(Structured Query Language)을 사용한다고 한다. 구성 데이터: 데이터베이스는 데이터의 집합체입니다. 데이터는 보통 구조화된 형태로 저장되며, 이를 테이블, 레코드, 필드 등의 용어로 표현할 수 있습니다. 스키마(주로 관계형 데이터베이스에서만): 데이터베이스의 스키마는 데이터의 .. 더보기
중간까지 온 기억을 돌아보기... 현재 프로젝트 3주하고도 절반이 지나갔다 일단 내가 있는 조에서 담당하고 있는 프로젝트는 WebRtc와 WebSocket을 기반으로 한 화상채팅 을 하는 사이트 다. 컨셉은 '온라인 상에서 다같이 공부할 공간'을 마련하기 위해 만든 것이다. 당시 내가 맡았고 한 것에 대해 적으면 - User 관련 회원가입, 로그인 구현(로컬, 소셜) -> 코드 정리하면서 내가 만든 것은 정리됨... - Swagger 구현 - WebSocket 구현 - RefreshToken 구현(만들어두긴 했으나 타 조원이 대신 해버렸다...그래도 고찰은 했으니 이 것을 다른 곳에 쓸순 있다) 으로 정리된다. 이 이후에 할 것에 대해서는 - Redis 구현(서버가 재시작을 해도 휘발되지 않도록 해주게 DB 설정해주기. SQL도 있지만 .. 더보기
@JsonInclude 엔티티 값 중 일부만을 전달하기 위해 DTO를 만들다가 겹치는 내용이 90% 이상 되는데 굳이 DTO를 또 하나 만들어야 돼?! 라는 귀찮이즘 의문이 생겼었다. 아무것도 모르고 코드 Ctrl CV만 하던 SCV때야 까라면 까 식으로 했겠지만, 나름 싹이 나다보니 이제는 이것마저도 좀 더 쁘로페셔널하게 쓰고 싶다는 마음에... 그러다 발견한게 이 @JsonInclude이다. 원문에서는 Annotation이 달린 속성(필드, 메서드 또는 생성자 매개 변수에 사용되는 경우)의 값 또는 주석이 달린 클래스의 모든 속성을 직렬화할 시기를 나타내는 데 사용되는 주석입니다. Annotation이 없는 속성 값은 항상 포함되지만, 이 주석을 사용하면 간단한 제외 규칙을 지정하여 쓸 속성의 양을 줄일 수 있다. 라고 적.. 더보기
첫 협업 미니프로젝트 후기 드디어 첫 프론트 쪽과 협업을 진행하게 되었다. 첫날 당시에는 뭐를 얼마나 할 지 가늠이 안되다보니 정말 기존 배운 것들만을 활용해서 최소한의 기능만을 넣은 사이트를 만들어보자는 식으로 진행이 되었었다. (추가기능은 여유가 될때 넣는 방식으로) 당시 내가 넣은 것은 '사용자' 에 대한 CRUD 구현을 해두었다. 그 뒤 카톡 로그인을 통한 다른 방식도 구현을 하는 등 지금까지 알고 있는 선 한에서만 넣었다. 말 그대로 첫 프로젝트 다 보니 지금것 정보에 한해서만 넣는게 좋겠다고 생각했기 때문이다. 막상 발표때 되니 넣은 기능들 중 일부를 못보여준게 아쉬웠다... (결국 카톡 로그인은 못들어갔다...하지만 이게 기억에 남았으니 다음에는 무조건적으로 푸시 넣을 것이다. 기존 로그인 대비 가입 과정도 단순한데 .. 더보기
교차 출처 리소스 공유 (Cross-origin resource sharing) 정의 CORS 란 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조이다.(위키피디아, 신뢰성 낮은 곳 참조) CORS 는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다.(모질라-파폭 개발한 곳) 이 두 설명에서 말하고자 하는 것을 공통적으로 잡아본다면...A에서 B의 자원이 필요할때 접근할 수 있도록 해주는 조치 정도로 생각할 수 있다. 그럼 이걸 왜 하는가? 조사하기 전에 들었던 생각은 '보안 때문' 이라 들었었다. 다른 곳에서 요청하는 만큼 다 달라고 해서 줄 수는 없을것이니... 실제로도 '보안 상의 이유로, 브라우저.. 더보기