일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터베이스
- 프로그래머스
- 시나공
- kotlin
- java
- 스프링
- SW봉사
- C++
- 정보처리산업기사
- 1과목
- 공부일지
- 코딩교육봉사
- 백준 알고리즘
- BFS
- 파이썬
- SQL
- 소프티어
- 알고리즘
- 코딩봉사
- 자바
- 백준알고리즘
- programmers
- python
- 코틀린
- 백준
- 문제풀이
- CJ UNIT
- softeer
- MYSQL
- 회고
- Today
- Total
목록개발/Database (39)
JIE0025
✅ DB 클러스터링이란? > 단일 데이터베이스를 연결하는 둘이상의 서버/인스턴스를 결합하는 프로세스 아래를 보면 쿼리를 수행하는 서버가 있고, 실제 저장공간인 Database가 있다. 서버를 둘 이상으로 늘려서 단일 Database에 연결하는것이다. ✅ 클러스터링을 하는 이유 만약 DB 서버가 2대가 된다면 어떻게 될까?많은 양의 쿼리문을 더 빠르게 응답할 수 있을것이다. 또한 한개의 서버가 이상이 생기더라도 다른 서버가 존재 하기 때문에 정상적인 서비스를 운영할 수 있다. 단점위 그림을 보면 두 서버가 둘다 Active하다. 이는 두개 서버가 동시에 같은 자원에 접근하려고 할수 있다는 의미가 된다. (병목현상)병목현상이 발생하면 더 많은 비용이 발생할 수 있다. >> Active ..
✅ 개요 몽고디비에선, PK의 역할을 하는 _id를 사용한다. 만약 _id를 지정하지 않으면, 자동으로 ObjectId라는 기본 데이터형을 사용해 12bytes로 표현이 되는데 RDBMS에서는 PK의 이름을 지정할 수 있었다. MongoDB에서도 _id가 아닌, 특정 컬럼을 PK처럼 사용할 수 있는지 궁금해졌다. _id를 제거할수는 있는걸까? ✅ _id https://www.mongodb.com/docs/manual/core/document/ Documents — MongoDB Manual Docs Home → MongoDB Manual MongoDB stores data records as BSON documents. BSON is a binary representation of JSON documen..
간단하게 MongoDB에서 컬렉션과 문서를 생성하고, 데이터를 관리하는 실습을 해보았다. ✅ Create Database Compass 애플리케이션에서 + 버튼을 눌러 데이터베이스를 생성해보자. 데이터베이스 이름과 컬렉션(유사 RDBMS 테이블) 이름을 만들어준다. 아래와 같은 화면을 볼 수 있다. 🖥 CLI에서 처리하면? # 1) mongodb 접속 mongo # 2) 전체 DB 열람 show dbs # 3) 데이터베이스 선택 (or 생성) use tutorial # 4) 선택한 DB의 콜렉션 열람 show collections tutorial 데이터베이스가 잘 생성된것을 확인할 수 있다. ✅ Create Documents + ADD DATA에서 Insert document 를 클릭하자. 아래와 같은 ..
✅ MongoDB란? 필요한 쿼리 제공 및 인덱싱을 활용해 원하는 수준의 확장성과 유연성을 제공하는 문서 데이터베이스. NoSQL 데이터베이스 시스템이다. 문서지향 데이터베이스로JSON과 유사한 BinaryJSON (BSON)을 사용해 데이터를 저장한다. 내부적으로는 BSON 형식으로 저장되지만, 사용자는 JSON과 유사하게 데이터를 다룰 수 있다. ✔️ NoSQL Not Only SQL의 약자로, 기존 RDBMS의 한계를 극복하기 위해 만들어졌다. 고정된 스키마, JOIN이 존재하지 않다. ✔️ 문서지향 (Document Oriented) Document란 NoSQL에서 데이터를 저장하는 기본단위이다. key-value쌍의 집합으로 구성되어 있다 (JSON과 유사한 구조) 관련된 데이터를 그룹화하기 위..
✅ 왜 인덱스는 B-TREE, B+TREE 자료구조를 채택했을까? 인덱스 구현을 위해선 대표적으로 해시테이블과 비트리가 존재한다. ⏺ 해시테이블 해시테이블은 Key value를 저장하는 데이터 구조로, 빠른 데이터 검색을 할때 유용하다. 따라서 해시테이블 기반의 DB인덱스는 컬럼의 값으로 생성된 해시를 통해 인덱스를 구현한다. 검색 속도도 해시테이블의 Key를 찾는 속도인 O(1)이다. 그러나 DB의 인덱스에서는 해시테이블을 사용하는 경우가 제한적이다. WHY? equal = 연산에만 특화되었기 떄문이다. 해시함수는 값이 1개라도 달라지면 다른 해시값을 생성하기 때문에 범위 검색 (> ⌈M2⌉⌈�2⌉, 최대 M�개의 서브 트리를 갖는다. 6. 모든 leaf node들은 같은 level에 있어야 한다. ⏺..
✅ 개요 Database와 SQL강의를 듣다보면 SELECT 문을 배우게 되는데 일반적으로 데이터를 출력한다 정도로만 배우지, 내부적으로 기능이 무엇이 있는지 정의 자체는 배운 기억이 나지 않는다. SELECT문을 통해 데이터 검색 기능의 원리에 대해 알아보자. ✍️ Selection 테이블에서 출력하고자 하는 행을 제한적으로 출력한다. 데이터베이스에서 원하는 부분집합 (subset)을 선택한다. 👩💻 간단한 예시 CUSTOMERS 테이블에서 AGE가 20 이상인 "행"을 선택한다. SELECT * FROM CUSTOMENRS WHERE AGE>=20 ✍️ Projection 테이블에서 출력하고자 하는 열을 제한적으로 출력한다. 👩💻 간단한 예시 CUSTOMERS 테이블에서 NAME과 AGE라는 "열..
✅ 데이터 확인 중.. 로컬에 많은 데이터를 추가해 성능 테스트를 해보기 위해 파이썬을 이용해 데이터 추가 스크립트를 작성하였고, 일단 5000개를 목표로 스크립트를 실행했다. 데이터가 잘 들어갔는지 확인하기 위해 MySQL workbench를 보았는데, primary key가 1000까지 밖에 안들어가진건지,, 왜 1000이 나오는건지 도무지 이해할 수 없었다. ✅ 데이터 보기 1000개 제한 해제 알아보니 데이터는 잘 들어갔으나, 1000개만 보여주고 있는것이었다. MySQL WorkBench > preference (윈도우면 Edit > preference) SQL Editor > SQL Execution > SELECT Query Results Limit Rows 의 체크를 해제시킨다. 이후 데이..
GROUP BY와 PARTITION BY의 가장 큰 차이점은 행 수이다. ✅ GROUP BY GROUP BY 절은 특정 칼럼을 기준으로 집계 함수를 사용하여 건수(COUNT), 합계(SUM), 평균(AVG) 등 집 계성 데이터를 추출할 때 사용 group 에 따라 행을 집약해 결과를 도출함 하나 이상의 컬럼을 기준으로 컬럼값에 따라 그룹화 하여 그룹별로 출력한다. 즉 집계 함수를 사용하여 기존 행에 있던 값들을 계산한 후 새로운 행에 입력해 주는데, 집계 함수가 데이터를 하나로 합쳐주는 과정에서, 기존의 상세 데이터들을 잃게 된다. ✔️ group by 유의사항 함께보기 그룹함수 사용시 단순 컬럼은 SELECT 리스트에 올 수 없다. 단 GROUP BY 절 뒤에 묶인 단순 컬럼은 SELECT 리스트에 기..
트랜잭션? 데이터베이스의 상태를 변경시키기 위해 수행하는 작업의 단위 데이터베이스의 상태를 변화시킨다는 말의 의미는 SQL질의어를 이용해 데이터베이스를 접근하는 것이다. 작업의 단위는 질의어 한문장이 나이고, 사람이 정하는 기준에 따라 정해진다. 예시 게시판 글 작성 -> 작성 버튼 클릭 -> 업데이트 된 게시판 리스트를 보는 상황에서 1) 사용자가 글 작성 버튼 클릭시 insert문 사용 2) 게시판을 구성할 데이터를 Select해서 최신 정보 유지 이 상황에서 작업의 단위는 insert + select ** 관리자와 개발자가 트랜잭션 설계를 잘 하면 데이터를 다룰때 많은 이점이 있음. 트랜잭션 특징 1) 원자성 (Automicity) 트랜잭션이 데이터 베이스에 모두 반영되거나, 전혀 반영되지 않아야 ..
요구사항을 반영한 ER다이어그램을 만들고, 관계 데이터 모델도 써보겠다. 이용하는 DB는 마당대학이지만, ER 다이어그램과 관계 데이터 모델을 생성하는 것이기 떄문에 데이터베이스는 필요하지 않다. 마당대학 요구사항 ① 교수(Professor)는 아이디(ssn), 이름(name), 나이(age), 직위(rank), 연구 분야(speciality)를 가진다. ② 학과(Department)에는 학과번호(dno), 학과이름(dname), 학과사무실(office)이있다. ③ 대학원생(Graduate)은 아이디(ssn), 이름(name), 나이(age), 학위과정(deg_prog, 석사/박사)을 가진다. ④ 과제(Project)는 과제번호(pid), 지원기관(sponsor), 개시일(start_date), 종료일(..