Zero to Hero
DB 예약어(MySQL, MariaDB)
Programming 2021. 5. 14. 14:44

MySQL MySQL 예약어 - 제타위키 다음 문자열 포함... zetawiki.com MariaDB MariaDB - 예약어 - 다음은 MariaDB의 모든 예약어 목록입니다. 예약어 는 인용 부호가 없으면 식별자 다음은 MariaDB의 모든 예약어 목록입니다. 예약어 는 인용 부호가 없으면 식별자 로 사용할 수 없습니다 . 각 버전의 예약어 목록은 keyword 규칙 sql/sql_yacc.yy 또는 keyword 규칙에 포함 된 keyword_sp 규 runebook.dev JPA 뿐만 아니라 DDL을 사용할 때 DB에서 사용하는 예약어, 혹은 시스템 관리용으로 생성되는 테이블(USER 등)을 Table, Column 이름으로 사용할 경우 에러가 발생한다. 혹시 이상한 곳에서 안 되는 것 같을 땐 ..

데이터베이스를 지탱하는 기술 06
Review 2020. 12. 27. 14:29

NoSQL SQL 쿼리는 다음과 같은 단계를 거친다 1. 쿼리의 수신 2. 구문 해석 3. 테이블의 오픈 4. 테이블의 잠금 5. 실행 계획의 작성 6. 레코드로의 액세스 7. 테이블의 잠금 해제 8. 테이블의 클로즈 9. 결과 회신 기본 키 검색이라는 용도로 사용할 때 실제로 애플리케이션에서 의미가 있는 작업은 1,6,9번 밖에 없다. 그 이외의 작업은 모두 불필요한 작업이다. 이 불필요한 작업 때문에 데이터베이스의 성능을 발목 잡는다. NoSQL은 이런 관점에서 MySQL 보다 약 3배 이상의 빠른 쿼리 처리량을 보여준다. 탄생 배경 기본키 이용한 단순 검색 같은 경우처럼... SQL문과 같은 복잡한 언어를 사용하지 않고 프로그래밍 언어의 라이브러리 함수를 사용하여 직접 데이터를 액세스 하는 편이 훨..

데이터베이스를 지탱하는 기술 05
Review 2020. 12. 27. 14:10

분석계 처리는 무엇이 어려운가? 1. 데이터베이스는 데이터를 안전하고 빠르게 저장하는 것도 중요하지만, 결국 저장된 데이터를 어떻게 사용할지가 근본적인 존재 이유다. 2. 그러나 "분석 자체에 너무 시간이 걸려 현실적인 시간 내에 처리를 완료할 수 없다"라는 문제가 발생한다. 3. 그 이유는 RDBMS 자체가 DWH 같은 형태의 작업 형태에 적합하지 않기 때문이다. 4. 테이블은 크게 2개로 분류할 수 있다. 팩트 테이블, 디멘션 테이블이 그것이다. 5. 디멘션 테이블은 상대적으로 데이터의 삽입이나 갱신이 적은 테이블을 의미한다. 예를 들어 "고객", "협력사" 등의 테이블은 데이터의 갱신이 자주 이루어질 필요가 없다. 하지만 이 테이블의 데이터는 다른 테이블의 FK로 사용된다 6. 팩트 테이블은 축적계..

데이터베이스를 지탱하는 기술 04
Review 2020. 12. 27. 13:40

대량의 데이터를 고속으로 처리하는 기술 인덱스 특징 1. B+Tree 구조를 띄고 있다. 2. 참조 및 갱신이 O(logmN)으로 처리할 수 있어 매우 빠르다. 3. 모든 액세스가 랜덤 액세스다. 액세스 되는 블록이 군데군데 위치하고 있고 HDD는 랜덤 액세스가 매우 느리다. 4. 인덱스가 메모리에 들어가 있는 경우는 매우 빠르지만 그렇지 않은 경우 HDD에 랜점 액세스로 접근해야 하고, 성능은 크게 악화된다. 5. 인덱스가 메모리에 올라가지 못한 다는 것은 그만큼 데이터 양이 많아졌다는 뜻이다. 6. 인덱스 크기를 어떻게 하면 줄일 수 있을지를 고민하고, 이를 줄이는 것이 성능 향상으로 이어진다. 7. 처리하는 데이터가 대량으로 되었을 경우에 DML이 느려지게 되면 성능 면에서 큰 리스크를 책임 저야 ..

데이터베이스를 지탱하는 기술 03
Review 2020. 12. 27. 13:13

트랜잭션(Transaction) 1. 어떤 Action에 대해서 데이터베이스를 조작할 때는 다양한 쿼리가 혼합된다. 2. 예를 들어 "상품 구매"라는 Action을 처리하기 위해서 DB는 3. 재고 조사(select), 현재 고른 상품 추가(insert), 소지금 및 재고 감소(update), 구매 내역 갱신(insert, update 등)... 4. 만일 Action이 실패했다면, 데이터베이스는 "업무를 처리하기 이전 상태로 되돌리기"를 할 수 있어야 한다. 5. 하지만 Action은 다양한 쿼리로 구성되어있고 이 쿼리가 진행되는 도중에 장애가 발생한다면 어떻게 복구할 것인가? 6. 이런 문제, 즉 데이터베이스의 일관성을 유지하고 일관성 있는 상태로 자동 복구하기 위한 구조가 트랜잭션이다. 무정지성 확..

데이터베이스를 지탱하는 기술 02
Review 2020. 12. 27. 12:56

데이터베이스는 어떤 때에 크래쉬 되는가? 1. 소프트웨어 장애 2. OS 장애 3. 하드웨어 장애 디스크 이중화로 데이터 손실 방지하기 1. 데이터는 보통 HDD에 저장된다. 2. 그러나 HDD는 하드웨어 중에서 가장 고장률이 높은 부품이다. 3. RAID 기술을 이용해 데이터 손실을 방지한다. 4. RAID 구성에 따라 한 개가 망가진 상태에서 방치하면 성능이 크게 저하할 수 있고, 두 번째 HDD가 손상되면 데이터 손실의 위험이 있다. 5. 이런 것을 방지하기 위해 HDD가 손상된 경우에 서비스를 멈추지 않고 새로운 HDD로 교체하여 복구하는 "Hot Swap"이라는 기술도 병용된다. 6. 하지만 근본적으로 RAID만으로는 서비스를 운영하는 것은 충분하지 않다. 장애 원인이 HDD 뿐만이 아니기 때문..