일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터베이스
- Kotlin
- 운영체제
- MVVM
- github
- 디자인 패턴
- 코틀린
- 앱
- Operating System
- 리액트네이티브
- 리액트
- 메모리
- 앱개발
- 프로세스
- 안드로이드 개발
- 안드로이드 디자인 패턴
- reactnative
- 스레드
- 안드로이드
- 액티비티
- Database
- cs
- 개발
- CS지식
- 디자인패턴
- 앱 개발
- Android
- React
- db
- OS
- Today
- Total
목록cs (13)
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는 관계형 구조로 표현할 수 있는 데이터를 구성하는데 유용하나, 비정형 데이터를 충분히 표현할 수 없다는 단점이 있다. *비정형 데이터 : 비구조화 데이터. 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않..
공유 자원(shared resource) 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 모니터, 프린터, 메모리, 파일, 데이터 등의 자원이나 변수 등을 말한다. 이 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태(race condition)이라 한다. 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결괏값에 영향을 줄 수 있는 상태인 것이다. 이러한 경쟁 상태가 발생하면 공유 자원 접근 순서에 따라 실행 결과가 달라질 수 있다. 위 그림과 같이 프로세스 A와 B가 동시에 접근하여 경쟁 상태가 발생할 수 있다. 그 결과 값이 맞지 않는 값이 출력되었다. 임계 영역(critical section) 둘 이상의 프로세스, 스레드가 공유 자원에 접근할 때 순서 등의 ..
멀티 프로세싱 여러 개의 프로세스를 통해 두 가지 이상의 일을 수행할 수 있는 것. 이를 통해 하나의 일을 병렬로 처리할 수 있다. 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생되더라도, 다른 프로세스를 이용해서 처리할 수 있으므로 신뢰성이 높은 강점이 있다. 웹 브라우저의 멀티 프로세스 웹 브라우저는 멀티 프로세스 구조를 갖고 있다. 웹 브라우저에는 여러 프로세스가 있다. 브라우저 프로세스 : 주소 표시줄, 북마크 막대, 뒤로 가기 버튼, 앞으로 가기 버튼 등을 담당. 네트워크 요청이나 파일 접근 같은 권한을 담당. 렌더러 프로세스 : 웹 사이트가 보이는 부분의 모든 것을 제어. 플러그인 프로세스 : 웹 사이트에서 사용하는 플러그인을 제어. GPU 프로세스 : GPU를 이용해서 화면을 그리는..