Developer/Database

MongoDB 안녕하세요~ 오늘은 Nosql DB 의 대표적으로 많이 활용되는 MongoDB 에 대해 알아볼게요 MongoDB 는 많은 분들이 아시다 싶이 json 기반으로 데이터를 저장합니다. json 이라는 데이터 형식 특성상, 필드 추가/삭제가 용이하기 때문에 그만큼 데이터를 저장하는데에 있어서 조금 더 유연한 측면을 제공하죠. 만일 여러분들이 맡은 프로젝트에서 서비스가 점점 발전하고, 요구사항이 지속적으로 추가/변경 된다면 대처에 용이하게 하기 위해 mongoDB 를 솔루션으로 채택해볼 수 있습니다. 만일 이러한 상황에서 RDB 를 채택하면, RDB 는 힘들게 정한 데이터 모델링으로 Table 을 설계하고, 설계한 틀을 벗어나기에는 어려운 단점들이 있습니다. 그래서 요구사항이 계속 바뀌고 빠르게..
Index 자주 사용하지만.. 잘 알고 있으신가요? 안녕하세요 ㅎㅎ 회사에 입사해서 비즈니스 통계 데이터를 추출하다 보니, 문득 그런 생각이 들었습니다. Index를 이용한 select query 를 만들고 plan 을 해보고 있지만, 정말 나는 Index 에 대해 완벽히 알고 있을까? Index 를 사용하는 방법은 알지만, 어떻게 하면 효율적인 query 를 작성하고, 어떻게 하면 올바르게 Index 를 설계하는지 알고 있는걸까? 개발하다 보니 너무 궁금해져서 본격적으로 Deep Dive 를 하고 싶게 되어 준비하게 되었습니다. Index 란 무엇일까? 그럼 우리는 Index 가 무엇인지를 알아야 합니다. Index 란 본래 Table 에 저장되어 있는 데이터를 쉽게 찾기 위한 색인 이라고 정의합니다..
안녕하세요 ㅎㅎ 오늘은 이제 Database 항목으로 다시 찾아오게 되었습니다.!! 실제 업무를 진행하다보면, 비즈니스 사항에 맞는 쿼리를 작성하는 경우가 정말 많은데요. 내가 작성한 쿼리가 올바른가? 이대로 production 코드에 반영해도 괜찮은가? 에 대한 의문을 해결해줄 수 있는 Query Plan 과 어떻게 Intellij 를 통해서 활용할 수 있는지 알아보겠습니다. 설명에 사용된 기술: Mysql, Mysql Container, Spring Data JPA Query Plan 이란? QueryPlan 의 정의는 Wiki 페이지에서 찾아볼 수 있는데요. SQL 관계형 데이터베이스 관리 시스템의 데이터 접근에 사용되는 순서에 대한 순서 집합 즉 우리가 만든 쿼리를 제출했을 때 어떤식으로 데이터 ..
MySQL Master Slave 구조 만들어보기 일반적으로 디비에 대한 트래픽 분산을 위해서 Mysql Replication 를 통해서 트래픽 집중 문제를 해결할 수 있는데요 Master에게는 데이터 동시성이 아주 높게 요구되는 트랜잭션을 담당하고, Slave에게는 읽기만 데이터 동시성이 꼭 보장될 필요는 없는 경우에 읽기 전용으로 데이터를 가져오게 됩니다. 일반적으로 Front에서 데이터를 읽어들일 때, 꼭 데이터 일관성이 필요한 경우와 아닌 경우에 대한 API 가 나누어지게 됩니다. 그런 경우에 읽기전용으로 트랜잭션을 사용하여 디비에 대한 트래픽을 분산할 수 있습니다. 그래서 오늘은 Mysql을 직접 구축 해보는 시간을 가질 것이에요 ㅎㅎ Docker Compose 로 구축하기 직접 로컬에 설치하는..
Modeling - 현실세계에 일어나는 일들을 객체화하는 것을 의미한다. = Domain을 정의한다 - 너무 어려운 말이니까 바로 예를 들어볼까? Ex) Cafe에는 여러 가지 메뉴(객체)가 있고, 다양한 손님(객체)들이 주문(객체)해서 커피(객체)를 얻어낸다! - 각각의 객체에 대한 정보들을 Table화 하는 것이 DataBase에서 핵심인 내용이고, 설계의 주요 포인트다 - Entity(Table) + Attribute(Column) + Relationship(연관관계)를 효율적으로 정의해야 된다! * Entitiy 검증하기 1. 유용성을 보장 : 데이터가 의미가 있어야 한다. 2. 식별자(Identifier)가 존재 : 반드시 유일한 식별자(PK)가 있어야 한다! 3. 2개 이상의 속성(Attrib..
데이터 형식 - Table을 생성하기 위해서는 Column마다 지정해야되는 형식을 선언해야 한다! - 기본적으로 DDL(Data Definition Language)을 사용한다~! Data Type 설명 VARCHAR 가변길이의 문자열 데이터타입 (최대 65535 Byte) CHAR 고정길이의 문자열 데이터타입, 지정된 길이보다 짧은 데이터가 오면 나머지는 공백으로 채운다 TINYTEXT 문자열 데이터 타입 (최대 255 Byte) TEXT 문자열 데이터 타입 (최대 65535 Byte) DATE 날짜(Year-Month-Date) 형식의 데이터 타입 DATETIME 날짜 + 시간(시:분:초) 형식의 데이터 타입 TINYINT 정수형 데이터 타입(1Byte) (-127 ~ 128) 또는 (0~255)의 ..
huisam
'Developer/Database' 카테고리의 글 목록