독서/데이터 중심 애플리케이션 설계
[데이터 중심 애플리케이션 설계] 저장소와 검색
데이터 중심 애플리케이션 설계를 독파하며 정리하는 글입니다. # 데이터베이스를 강력하게 만드는 데이터 구조 세상에서 제일 간단한 데이터베이스를 구현해 보자. #!/bin/bash db_set () { echo "$1,$2" >> database } db_get () { grep "л$1," database | sed -e "s/A$1,//" | tail -n 1 } 키-값 저장소를 함수 두 개로 구현한 예시이다. 이런 방식으로 데이터베이스를 구성할 경우 db_set()은 좋은 성능을 보인다. 단순히 파일의 끝에 데이터를 추가해 주기만 하기 때문이다. 실제로 많은 데이터베이스의 로그는 이런 append-only 방식의 데이터 파일을 사용한다. 다만, db_get()의 경우 문제가 있다. 데이터베이스에 많은..
[데이터 중심 애플리케이션 설계] 데이터 모델과 질의 언어
데이터 중심 애플리케이션 설계를 독파하며 정리하는 글입니다. 데이터 모델은 소프트웨어 개발에서 중요한 부분임. 소프트웨어가 어떻게 작성됐는지 뿐만 아니라, 해결하려는 문제를 어떻게 생각해야 하는지에 대해서도 영향을 미치기 때문. 또한, 데이터 모델은 그 위에서 소프트웨어가 할 수 있는 일과 할 수 없는 일에 영향을 주므로 애플리케이션에 적합한 데이터 모델을 선택하는 작업이 상당히 중요함. # 관계형 모델과 문서 모델 오늘날 가장 잘 알려진 데이터 모델은 관계형 모델을 기반으로 한 SQL임. SQL에서 데이터는 테이블(table)이라 불리는 관계(relation)로 구성되고, 각 관계는 로우(row)라 불리는 순서 없는 튜플(tuple)의 모음이다. 관계형 데이터 베이스의 근원은 비즈니스 데이터 처리에 있..
[데이터 중심 애플리케이션 설계] 신뢰성, 확장성, 유지보수성
데이터 중심 애플리케이션 설계를 독파하며 정리하는 글입니다. 요즘의 애플리케이션은 CPU의 성능보다 데이터의 양, 데이터의 복잡도, 데이터의 변화 속도가 문제이며, 필수 요소는 다음과 같다. 애플리케이션의 필요 요소 구동 애플리케이션이나 다른 애플리케이션에서 나중에 다시 데이터를 찾을 수 있게 데이터를 저장함 (데이터 베이스) 읽기 속도 향상을 위해 값비싼 수행 결과를 기억함 (캐시) 사용자가 키워드로 데이터를 검색하거나 다양한 방법을 통해 필터링할 수 있게 제공함 (검색 색인, search index) 비동기 처리를 위해 다른 프로세스로 메시지를 보냄 (스트림 처리, stream processing) 주기적으로 대량의 누적된 데이터를 분석 (일괄 처리, batch processing) 또한, 소프트웨어..