일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- 코틀린
- 회고
- 데이터베이스
- python
- 소프티어
- SQL
- java
- 파이썬
- 백준알고리즘
- SW봉사
- 코딩교육봉사
- Spring
- BFS
- 스프링
- 정보처리산업기사
- softeer
- C++
- MYSQL
- CJ UNIT
- 코딩봉사
- 프로그래머스
- programmers
- 자바
- kotlin
- 알고리즘
- 백준 알고리즘
- 1과목
- 문제풀이
- 공부일지
- Today
- Total
목록Infra/Database (42)
JIE0025

✅ 오라클의 데이터 추출 과정 유저 프로세스(User Process)는 사용자가 오라클 프로그램을 실행시켰을 떄 생성되는 프로세스이다.사용자가 SQL문을 실행시키면-> 이를 처리하기 위해 서버 프로세스가 생성/연결된다.서버프로세스는 오라클 인스턴스 내부의 SGA (공유메모리) 영역에서라이브러리 캐시/ 버퍼 캐시에 접근해 데이터가 있는지 확인한다.- 라이브러리 캐시는 SQL문 자체를 저장해두는 메모리 공간이다. -> 같은 SQL문장을 실행할떄 바로 실행하기 위함 (소프트 파싱) - 버퍼캐시는 데이터 자체를 저장해두는 메모리공간이다. -> 실제 테이블/인덱스 데이터를 블록 단위로 캐싱한다. -> 변경된 데이터가 디스크에 쓰기전 수정내용을 저장한다 (Dirty Block)캐시에 데이터..

SGA는 System Global Area의 약자로 서버프로세스와 백그라운드프로세스가 공통으로 액세스하는 데이터와 제어구조를 캐싱하는 메모리공간이다. DB 버퍼 캐시 / 공유풀(라이브러리캐시/ 딕셔너리 캐시) / Redo Log Buffer 세개에 대해서 알아보자. 1. DB Buffer Cache 데이터 조회와 변경등 실제 작업이 일어나는 공간이다. 사용자가 조회/변경하려는 모든 데이터가 이곳에 존재한다. 여러 사용자는 동시에 I/O를 시도할 수 있다. 내부에 블록 상태를 3가지로 나누어 리스트를 통해 관리하고 있다고 한다. Pinned Buffer : 다른 사용자가 사용중Dirty Buffer : 현재 작업은 진행되지 않지만 다른 사용자가 내용 변경후 아직 데이터파일에 저장하지 않은 버..

✅ SQL 최적화 사용자가 SQL을 질의하면 옵티마이저(비용기반)는 그것을 가장 비용(cost)이 낮은 실행계획을 선택하여 프로시저로 만든다. DBMS에서 프로시저를 작성하고, 컴파일해 실행가능한 상태로 만드는것이 SQL 최적화이다. 1) SQL을 파싱한다. SQL 파서가 파싱을 진행한다. 파싱 트리를 생성한다 : SQL문을 이룽는 개별 구성요소를 분석해서 트리를 만든다. Syntax 체크 : 문법오류가 없는지 확인한다. Semantic 체크 : 의미상의 오류가 없는지 확인한다 (없는 테이블/컬럼 사용, 권한이 있는지 등) 2) SQL 최적화옵티마이저가 최적화를 맡는다 미리 수집한 시스템/통계정보를 바탕으로 실행경로를 생성하고 가장 효율적인 1개를 선택한다. 3) 로우소스 생성로우소스생성기가 담..

✅ 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 의 체크를 해제시킨다. 이후 데이..