[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/데이터베이스 10

[DB] Index

Index (인덱스)? 인덱스는 데이터베이스의 테이블에 대한 검색 속도를 높여주는 자료구조입니다. 특정컬럼에 대한 인덱스를 생성하면 해당 컬럼의 데이터들이 정렬되어 별도의 메모리공간에 물리적주소와 함께 저장됩니다. 따라서 해당 컬럼에 where 조건 등을 걸어 접근할 경우 이를 활용할 수 있게 되어 접근 속도가 빨라집니다. 하지만 생성에 시간이 걸리고 INSERT, UPDATE, DELETE가 자주 발생하는 경우 성능이 하락할 수 있습니다. 일반적으로 하나의 컬럼을 key로 인덱스를 생성하지만, 여러개의 컬럼을 key로 인덱스를 생성하는 composite index라는 개념도 존재합니다. Index의 자료구조 이러한 인덱스를 구현하는 자료구조로는 대표적으로 해시테이블과 B+ Tree가 있습니다. 자료구조..

[DB] 트랜잭션과 ACID

트랜잭션이란? 트랜잭션은 데이터베이스에서 쪼갤 수 없는 업무처리의 최소 단위를 말합니다. 하나의 트랜잭션은 데이터베이스에 읽거나 쓰는 여러 개의 쿼리를 요구하는데, 이때 하나의 쿼리가 실패하면 데이터베이스 시스템은 전체 트랜잭션 혹은 실패한 쿼리를 롤백합니다. 트랜잭션의 연산 Commit 하나의 트랜잭션 작업이 끝나고 데이터베이스가 일관성이 유지되었음이 확인될 때, 이를 트랜잭션 관리자에게 알리는 연산입니다. Rollback 하나의 트랜잭션 작업이 비정상적으로 종료되고 일관성이 깨졌을 때, 트랜잭션의 모든 연산을 취소하는 연산입니다. Rollback 연산이 수행되면 해당 트랜잭션은 아예 취소되거나 폐기됩니다. Savepoint Rollback 연산 수행 시 일반적으로는 전체 연산이 삭제되지만, 이 연산을..

Python으로 Mysql 다루기 (pymysql)

DB 사용자관리 사용자 생성 : mySQL 의 root 사용자를 모든 용도에 사용하지 말고, 적절한 권한을 가지는 사용자를 생성하여 사용하는 것이 바람직 예) create user 'db2020'@’%’ identified by 'db2020'; 권한 부여 : 특정 데이터베이스, 테이블 등에 읽기/쓰기 등의 권한을 부여할 수 있음 예) grant all privileges on university.* to 'db2020'@'%'; DB 응용프로그램 API 호출 순서 1. DB connection 설정 #Pymysql를 import import pymysql #DB connection 설정 conn = pymysql.connect( host='localhost', user='db2020', password..

개체와 속성

속성의 개요 속성의 개념 업무에 필요한 개체(엔티티)에서 관리하고자하는 더 이상 분리되지 않는 최소한의 단위 하나의 속성은 하나의 개체 타입으로 존재 속성명 / 도메인 / 선택성(not null, null) 으로 구성 속성 후보 선정 원칙 원시 속성(다른 속성에 의해 다시 재현될 수 없는 속성)으로 보이는 후보는 버리지 않는다 소그룹별로 후보군을 만들고 가장 근접한 개체에 할당 (핵심 개체를 대상으로 모델링을 실시했을 뿐, 아직 모든 개체가 드러나지 않았을 수 있다. 따라서 각 속성 후보들을 적절한 데이터 그룹으로 생성해두는 것이 필요) 속성의 명명 해당 업무에서 일반적으로 사용하는 용어 사용 서술식 속성명은 사용하지 않으며 명사형 사용 약어는 가급적 사용자제 개체 타입명을 속성명으로 사용해선 안됨 구체..

데이터베이스 모델링 개념

데이터베이스 설계 프로세스 데이터베이스 생명 주기 요구조건 분석 -> 설계 -> 구현 -> 운영 -> 감시 및 개선 감시 및 개선 과정에서 전 단계로 되돌아가 내용을 수정할 수 있다. 데이터베이스 설계 프로세스 요구사항 수집 분석 : 데이터베이스 요구사항 정리 개념적 설계 : 개념적 스키마 (ER 스키마) 완성 논리적 설계 : 논리적 스키마 (관계 데이터베이스 스키마) 완성, DBMS의 특성 고려, 관계 DBMS에서는 ER 스키마를 릴레이션들로 구성 정규화 : 정규화된 릴레이션들 물리적 설계 : 물리적 스키마 (릴레이션, 인덱스 등) 데이터 모델링 개념 데이터 세계 현실 세계의 개체를 개념적으로 모델링하여 개념적 구조를 만들고 해당 개념적 구조를 기반으로 데이터 모델링을 진행해 논리적 구조를 만든다. 그..

Mysql - 기초명령어 정리

DB 관련 DB 생성 CREATE DATABASE `DB이름` CHARACTER SET utf8 COLLATE utf8_general_ci CHARACTER SET utf8 COLLATE utf8_general_ci는 한글인코딩 설정 DB 삭제 DROP DATABASE `DB이름`DB 확인 SHOW DATABASES선택 USE `DB이름`테이블 관련 테이블 생성 CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type ) [ENGINE=engine_name] [DEFAULT CHARSET=utf8] InnoDB, Cluster (NDB), myisam 등의 엔진존재 테이블 확인 SHOW tables;스키마 확인 DESC `테이블명`..

SQLite - 기본함수

SQL 기본함수 x || y : 문자열 x와 y를 연결한다. LENGTH / SUBSTR(x, n, m) / TRIM(x, y) / LTRIM() / RTRIM() / UPPER() / LOWER() / REPLACE(x,y,z) 값이 숫자형이라면 사칙연산 및 나머지연산, ABS(), ROUND(x,n) 등의 처리도 가능하다. DATE('now'), TIME('now')를 통해 현재 날짜와 시각을 알 수 있다. STRFTIME(, 'now')을 사용해 FORMAT에 %d,%m,%Y,%w 등을 넣어 일,월,연도,요일 등을 알 수 있다. SQL 집계함수 SELECT COUNT(DISTINCT Continent) FROM Country; SELECT MIN(Population), MAX(Population) ..

SQLite - DB 생성과 변경

데이터베이스의 생성 CREATE DATABASE [DB이름] SHOW TABLES DROP DATABASE [DB이름] 비 SQLite와 SQLite 사이의 방법이 다르다. SQLite는 GUI 인터페이스를 조작해서 새로운 데이터베이스를 만들고, 패널에 불러오고, 연결하고, 연결을 끊는다. 비 SQL에서는 CREATE DATABASE [DB이름]으로 데이터베이스를 만든다. USE [DB이름] 으로 연결한다. SHOW TABLES 로 테이블 목록을 출력한다. DROP DATABASE [DB이름] 으로 데이터 베이스를 삭제한다. 테이블의 정의 및 생성 CREATE TABLE test (id INTEGER, name VARCHAR(255), address VARCHAR(255), city VARCHAR(255..

SQLite - 기초문법

CRUD? 데이터베이스의 기초 기능 Create, Read, Update, Delete 로 구성 데이터베이스 구조 하나의 데이터 베이스에 여러개의 '테이블'이 저장되어 있는 형태이다. 여러 종류의 데이터를 한 테이블에 통합해놓으면 중복하는 정보가 많아질 수 있기 때문에 여러 테이블로 분산하여 저장한다. 여러개의 테이블로 분산해놓고 일정 데이터값(이름, ID 등)을 통해 각 테이블 접속(연결)이 가능하다. SQL (Structured Query Language): SQLiteStudio SQLiteStudio는 사용하기 쉬운 SQL 개발환경이다. https://sqlitestudio.pl/ 설치과정없이 압축을 풀고 바로 사용가능 SQL 기초문법 : CREATE CREATE TABLE [테이블..

DB와 SQL

데이터베이스? 1950년대 미군이 처음 구축했다. 일정 구조에 따라 편성된 데이터의 집합이며, 여러 사용자의 요구에 따라 데이터를 저장하고 내보낸다. 구조적 특징 : 통합성(데이터가 중복되지 않음), 저장성(저장매체에 저장), 공용성(다양한 목적으로 이용가능), 변화성(데이터 삽입 및 삭제, 변경 가능) 데이터베이스 종류 계층형 DB : 트리 구조를 활용해 계층적으로 구조 정의 네트워크형 DB : 그래프 구조를 활용해 구조 정의 관계형 DB : 계층형과 네트워크형의 복잡한 구조를 단순화시킨 모델. 단순한 표를 활용해 구조를 정의한다. 객체지향형 DB : 객체의 개념을 도입해 멀티미디어같은 복잡한 데이터를 효과적으로 표현할 수 있도록 했다. SQL IBM 연구소에서 개발한 SEQUEL에서 유래함 관계형 데..