관계형데이터베이스(RDBMS)와 NoSQL데이터베이스의 차이
스키마: 엄격하고 정의되어야 함 / 유연하고 동적으로 변경 가능
쿼리 언어: SQL / JSON, API, Cypher(Neo4j) 등 다양
트랜잭션: 지원 / 지원
격리성(기본): repeatable_read(mysql) / local(독자적인 격리성 레벨을 가짐):= read_uncommited(유사) (mongodb)
스케일링: 수직 스케일링이 더 쉬움 - 서버 성능향상 (128G->256G) / 수평 스케일링이 더 쉬움 - 서버대수증가 (128G를 여러대)
종류: MySQL, Oracle, PostgreSQL / MongoDB, Redis, ElasticSearch, Neo4j
데이터베이스의 스토리지 엔진 - 데이터베이스 시스템에서 데이터의 저장, 검색, 트랜잭션 관리, 동시성 제어, 캐싱 등 핵심을 담당하는 필수 구성 요소
Innodb은 MySQL 8.0의 기본 스토리지 엔진이며 MyISAM이란 스토리지엔진으로도 변경이 가능
MySQL의 innoDB, MyISAM 스토리지엔진의 차이
트랜잭션: 지원 / 미지원
락 및 동시성: 행 레벨 락 / 테이블 레벨 락
외래 키 제약: 지원 / 미지원
=>딱 봐도 innoDB 더 좋아보임 -> Innodb가 MySQL 8.0의 기본 스토리지 엔진
어떤 엔진을 사용하는지 확인하는 쿼리
->SHOW TABLE STATUS LIKE 'example_myisam';
밀집 배열 - 일반적인 배열로 동일한 크기의 메모리 공간이 연속적으로 나열된 자료구조
자바스크립트의 배열은 지금까지 살펴본 일반적인 의미의 배열과 다름
희소 배열 - 배열의 요소를 위한 각각의 메모리 공간은 동일한 크기를 갖지 않아도 되며 연속적으로 이어져 있지 않을 수도 있음
const arr = ['string', 10, true, null, function () {}];
자바스크립트의 배열은 엄밀히 말해 일반적 의미의 배열이 아님
자바스크립트의 배열은 일반적인 배열의 동작을 흉내낸 특수한 객체
자바스크립트 배열은 인덱스를 프로퍼티 키로 갖으며 배열의 요소는 프로퍼티 값
자바스크립트에서 사용할 수 있는 모든 값은 객체의 프로퍼티 값이 될 수 있으므로 어떤 타입의 값이라도 배열의 요소가 될 수 있음
일반적인 배열과 자바스크립트 배열의 장단점
일반적인 배열은 인덱스로 배열 요소에 빠르게 접근 가능 but 특정 요소를 탐색하거나 요소를 삽입 또는 삭제하는 경우에는 비효율적
자바스크립트 배열은 해시 테이블로 구현된 객체이므로 인덱스로 배열 요소에 접근하는 경우, 일반적인 배열보다 성능적인 면에서 느릴 수 밖에 없는 구조적인 단점 but 특정 요소를 탐색하거나 요소를 삽입 또는 삭제하는 경우에는 일반적인 배열보다 빠른 성능을 기대
=자바스크립트 배열은 인덱스로 배열 요소에 접근하는 경우에는 일반적인 배열보다 느리지만 특정 요소를 탐색하거나 요소를 삽입 또는 삭제하는 경우에는 일반적인 배열보다 빠름