본문 바로가기
728x90

DataBase70

[DataBase] MySQL Index 1 (B-tree index) 인덱스(index) -인덱스는 데이터의 저장(INSERT,UPDATE,DELETE)의 성능을 희생하는 대신에, 데이터의 읽기(SELECT)속도를 높이는 기능이다. -MySQL에서는 B-TREE 알고리즘 HASH 알고리즘, FRACTAL-TREE알고리즘 및 R-TREE알고리즘이있다. 1)B-Tree 알고리즘: 가장 일반적으로 사용되는 알고리즘으로 컬럼을 변형하지 않고, 원래의 값을 이용해 인덱싱하는 알고리즘 2)Hash 알고리즘: 컬럼의 값으로 해시 값을 인덱싱하는 알고리즘으로 매우 빠른 검색을 지원. 값을 변형해서 인덱싱하므로 전방일치와 같이 값의 일부만 검색하고자 할 때는 인덱스를 사용할 수 없다. B-Tree Index -B-Tree 인덱스는 가장 범용적인 목적으로 사용되는 인덱스 -최상위에 하나의 .. 2021. 1. 18.
[DataBase] MySQL 아키텍처(구조) MySQL의 전체구조 MySQL 서버는 MySQL엔진과 스토리지 엔진으로 구분된다. MySQL 엔진 -클라이언트로부터 접속 및 쿼리 요청을 처리하는 커넥션 핸들러, SQL 파서 및 전처리기, 그리고 쿼리의 최적화를 위한 옵티마이저, DBMS의 두뇌에 해당하는 처리를 수행한다. 스토리지 엔진(Storage engine) -스토리지 엔진은 실제 데이터를 디스크 스토리지에 저장하거나 읽어오는 부분을 전담한다. -MySQL 서버에서의 MySQL엔진은 1개, 스토리지 엔진은 여러개를 동시에 사용 가능하다. ex) CREATE TABLE test_table(컬럼명1 데이터타입, 컬럼명2 데이터타입) ENGINE=InnoDB; 처럼 스토리지 엔진을 지정하면, 테이블의 모든 작업은 해당 스토리지 엔진이 처리 -SHOW.. 2021. 1. 18.
[DataBase] DBMS별 function 비교(ms-sql(sql-server),oracle,mysql) 출처: hackersstudy.tistory.com/25 2021. 1. 18.
[DataBase] MySQL,Oracle의 데이터베이스 계층 구조 비교 1. 일반적인 데이터베이스 계층 구조 MySQL에서 스키마와 데이터베이스가 어떻게 다른지 보기 전에 먼저 일반적인 데이터베이스의 4계층 구조를 보도록 하겠습니다. (정확한 지식이 아닌 전체적인 그림을 봅니다.) 데이터베이스 : 오라클의 경우 작동하는데 필요한 모든 파일을 의미합니다. 인스턴스 : DBMS가 동작할 때의 단위, OS 입장에서는 ‘프로세스’, DBMS에 따라서는 ‘서버 프로세스’ 또는 ‘서버’로 부르기도 합니다. 앞서 말한 데이터베이스가 실행 가능하게 메모리에 올라가 있는 걸 생각하시면 됩니다. 스키마 : 데이터베이스의 구조와 제약 조건을 정의한 것, 쉽게는 폴더에 해당하며 스키마도 폴더처럼 사용자가 자유롭게 만들 수 있고, 사용자에 따라 접근을 제한하는 등의 권한 관리가 가능합니다. 폴더이.. 2021. 1. 18.
[NoSQL] python에서 MongoDB연동시키기 일단 MongoDB와 python을 연동시키기 위해서는 python 라이브러리인 pymongo가 있어야 한다. cmd창을 열고 와 같이 pymongo를 다운받도록 한다. 이후 간단한 crud를 해보도록 할건데, 미리 CRUD관련된 클래스를 만들어두고 쓰면 편리하기 때문에, 구현 해두고 확인해보겠습니다. from pymongo import MongoClient from pymongo.cursor import CursorType class DBHandler: def __init__(self): host = "localhost" port = "27017" self.client = MongoClient(host, int(port)) def insert_item_one(self, data, db_name=None.. 2021. 1. 14.
[DataBase] 옵티마이저(Optimizer)와 실행계획 옵티마이저란? •옵티마이저(Optimizer)는 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행한다. 이러한 실행 방법을 실행계획(Execution Plan)이라고 한다. •JAVA, C등과 같은 프로그램 언어와는 달리 SQL은 사용자의 요구사항만 기술할 뿐 처리과정에 대한 기술은 하지 않는다. 사용자 요구사항을 만족하는 결과를 추출할 수 있는 다양한 실행 방법들 중에서 최적의 실행 방법을 결정하는 것이 바로 옵티마이저의 역할이다. •옵티마이저가 선택한 실행 방법의 적절성 여부는 질의의 수행 속도에 가장 큰 영향 미치게 된다. 최적의 실행 방법 결정이라는 것은 어떤 방법으로 처리하는 것이 최소 일량으로 동일한 일을 처리할 수 있을지 결정하는 것이다. •옵티마이저는 실제로 SQL문.. 2021. 1. 13.
[DataBase] 샤딩(Sharding)과 파티셔닝(Partitioning) #파티셔닝(Partitioning) -퍼포먼스(performance), 가용성(availability) 또는 정비용이성(maintainability)를 목적으로 당신의 논리적인 데이터 엘리먼트들을 다수의 엔티티(table)로 쪼개는 행위를 뜻하는 일반적인 용어이다. #샤딩(Sharding) 수평 파티셔닝(horizontal partitioning)과 동일하다. 데이터베이스를 샤딩하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 샤드에 어떤 데이터가 저장될지를 샤드키를 기준으로 분리한다. 예를 들면, 나는 고객의 데이터베이스를 CustomerId를 샤드키로 사용하여 샤딩하기로 하였다. 0 ~ 10000 번 고객의 정보는 하나의 샤드에 저장하고 10001 ~ 20000 번 고객의 정.. 2021. 1. 12.
[NOSQL] MongoDB Shell(명령어)로 CSV, JSON import 해보기 testdb 데이터베이스,testdb collection 생성, 직접 데이터 입력 1)show dbs 를 통한 database 목록확인 2)use testdb 를 이용한 데이터베이스 생성 및 사용 3)db.testdb.insert({"example":"ex1"})를 통한 collection 생성 및 데이터 삽입 // db는 현재 데이터베이스, testdb는 생성할(사용할) collection 이름 4)db.testdb.find()를 통한 데이터 확인 5)show dbs를 통해 만들어진 데이터베이스 확인 #여기까지가 전에 했던 내용. spidyweb.tistory.com/163?category=833086 지금부터는 shell을 통해 CSV,JSON 파일을 import 하는 방법을 소개해드리겠습니다. 1... 2021. 1. 11.
[NOSQL] MongoDB의 역할 및 활용 사례 NOSQL의 특징과 역할 -NOSQL 자체가 비복잡 대용량 데이터를 저장하기 위한 도구로 쓰이고 있다. -로그데이터를 저장할 때, 실시간 데이터 스트림을 저장할때 -부하 분산이 가능하다,(sharding) 데이터의 스키마제약을 받지않는다.(flexible schema) -replicaset 을 통한 HA(High Availability) 높은 가용성 (write,read 구분 및 장애시 사용할 예비 DB 복제 및 마련) MongoDB 알고리즘 MongoDB의 경우 확장된 형태의 Raft 컨세서스 모델 사용을 사용하면 컨세서스 알고리즘에는 paxos와 raft가 있다. 레플리카 셋에 참여하는 각 멤버들이 서로 데이터를 동기화하고 노드들 간에 하트비트가 되지 않을때 어떻게 할지 결정하는 알고리즘 Replic.. 2021. 1. 8.
728x90