일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디자인 패턴
- db
- 리액트네이티브
- 안드로이드 개발
- 안드로이드
- 메모리
- Android
- 리액트
- 스레드
- Operating System
- 코틀린
- 디자인패턴
- 데이터베이스
- 앱 개발
- reactnative
- 앱
- 안드로이드 디자인 패턴
- 액티비티
- Database
- 개발
- 앱개발
- Kotlin
- 운영체제
- github
- OS
- CS지식
- 프로세스
- React
- cs
- MVVM
- Today
- Total
목록데이터베이스 (10)
Tech Log
조인(join) 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것. MySQL에서는 JOIN 이라는 쿼리, MongoDB에서는 lookup이라는 쿼리로 사용한다. MongoDB를 사용할 때 lookup은 되도록 사용하지 않아야 한다. MongoDB에서의 조인 연산은 관계형 데이터베이스보다 성능이 안좋다고 벤치마크 테스트에서 알려져 있다. MongoDB에서의 조인 연산 성능 따라서 조인하는 작업이 많을 경우 관계형 데이터베이스를 사용하는 것이 더 낫다. 조인의 종류 내부 조인(inner join) : 왼쪽 테이블과 오른쪽 테이블의 두 행이 일치하는 행이 있는 부분만 표기 왼쪽 조인(left outer join) : 왼쪽 테이블의 모든 행이 결과 테이블에 표기 오른쪽 조인(rig..
인덱스 데이터를 빠르게 찾을 수 있는 하나의 장치. 예로는 책의 마지막 장에 있는 찾아보기가 있다. 책의 본문 안에 찾고자 하는 항목을 찾아보기를 통해 빠르게 찾을 수 있다. 이러한 인덱스를 설정하면 테이블 안에 찾고자 하는 데이터를 빠르게 찾을 수 있다. B-트리 인덱스는 보통 B-트리 자료 구조로 이루어져 있다. B-트리는 루트 노드, 리프 노드, 브랜치 노드로 나뉜다. 만약 E를 찾는다고 하면, 전체 테이블을 탐색하는 것이 아니다. 위 그림처럼 E는 D와 L 사이에 있으므로, 루트 노드에서 D로 들어가고 리프 노드에서 E를 찾을 수 있다. 자료 구조 없이 탐색한다면 다섯 번을 탐색해야 한다. 이렇게 노드로 나누면 두 번만에 값을 찾을 수 있다. 트리 탐색은 루트 노드부터 일어난다. 그리고 브랜치 노..
데이터베이스에는 여러 종류가 있다. 관계형 데이터베이스와 NoSQL 데이터베이스로 나뉜다. 먼저 우리가 익히 알고있는 관계형 데이터베이스에 대해서 다뤄보자. 관계형 데이터베이스(RDBMS) 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 말한다. SQL이라는 언어를 써서 조작한다. MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등이 있다. 표준 SQL을 지키기는 하지만, 각각의 제품에 특화시킨 SQL을 사용한다. 예를 들어 오라클의 경우 PL/SQL이라고 하는 SQL을 사용하고 SQL Server에서는 T-SQL, MySQL은 SQL을 사용한다. MySQL 대부분의 운영체제와 호환되며 가장 많이 사용하는 데이터베이스이다. 메타, 트위터 등 많은 기업에서 사용..
트랜잭션 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위. 여러 개의 쿼리들을 하나로 묶는 단위. 트랜잭션의 특징은 원자성, 일관성, 독립성, 지속성이 있으며 한꺼번에 ACID 특징이라고 한다. *쿼리 : 데이터베이스에 접근하는 방법. 데이터베이스에 정보를 요청하는 것. 원자성(atomicity) 트랜잭션과 관련된 일이 모두 수행됐거나 되지 않았거나를 보장하는 것. 트랜잭션 내의 모든 수정 작업이 수행되거나 수정 작업이 하나도 수행되지 않는다. 예를 들어 트랜잭션을 커밋했는데 문제가 발생하여 롤백하는 경우 그 이후에 모두 수행되지 않음을 보장하는 것. 예를 들어 1000만원을 가진 A가 0원을 가진 B에게 500만원을 이체한다고 한다. 그 결과 A는 500만원, B는 500만원을 가진다...
정규화(Normalication) 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정. *데이터베이스 이상 현상 : 삭제할 때 필요한 데이터가 같이 삭제되거나 잘못된 정보가 들어있거나 데이터를 삽입해야 하는데 하나의 필드 값이 NULL이 되면 안돼서 삽입하기 어려운 현상. 정규화의 원칙 1. 정보 표현의 무손실 : 정보가 사라지지 않아야 한다, 같은 의미의 정보를 유지하면서 더 효율적인 구조로 변화해야 한다. 2. 데이터 중복의 최소 : 데이터 중복을 최소화하면서, 데이터 관리의 편리성을 부여하고 자료 저장 공간을 효율적으로 사용. 3. 분리의 원칙 : 독립적인 관계는 별개의 릴레이션으로 표현..
ERD(Entity Relationship Diagram) 릴레이션 간의 관계들을 정의한 것. 테이블간의 관계를 설명해주는 다이어그램이다. 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 한다. 서비스를 구축한다면 가장 먼저 신경 써야 하는 부분이다. ERD의 중요성 ERD는 시스템의 요구 사항을 기반으로 작성된다. 이 ERD를 기반으로 데이터베이스를 구축한다. 데이터베이스를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우 설계도 역할을 담당하기도 한다. ERD는 관계형 구조로 표현할 수 있는 데이터를 구성하는데 유용하나, 비정형 데이터를 충분히 표현할 수 없다는 단점이 있다. *비정형 데이터 : 비구조화 데이터. 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않..
키(Key) 테이블 간의 관계를 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치다. 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성이다. 키에는 여러 종류가 있는데, 종류에 따라 위 그림과 같은 관계를 가진다. 슈퍼키는 유일성이 있다. 후보키는 유일성에 최소성까지 갖추었다. 후보키 중에서 기본키로 선택되지 못하면 대체키가 된다. *유일성(Unique) : 중복되는 값이 없는 것. 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 한다. *최소성(Minimality) : 필드를 조합하지 않고 최소 필드만 써서 키를 형성할 수 있는 것. 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 한다는 특성이다..
데이터베이스에는 여러 개의 테이블이 있고 이러한 테이블은 서로의 관계가 정의되어 있다. 이 관계는 관계화살표를 통해 나타낼 수 있다. 관계화살표는 다음과 같다. 1:1 관계 어느 엔티티 쪽에서 상대 엔티티와 반드시 단 하나의 관계를 갖는 것이다. 예를 들어 위 그림처럼 유저 한 명 당 이메일이 한 개씩 존재한다면 유저와 이메일은 1:1 관계다. 테이블을 두 개의 테이블로 나눠 테이블을 구조를 더 이해하기 쉽게 만들어준다. 1:N 관계 한 개체가 다른 많은 개체를 포함하는 관계다. 한 쪽 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것을 말한다. 예를 들어 쇼핑몰을 운영한다고 가정하면, 한 유저당 여러 개의 상품을 장바구니에 넣을 수 있다. 이 경우 유저와 상품은 1:N 관계다. 하나도 넣..