파이썬을 여행하는 히치하이커를 위한 안내서 - 데이터 지속성
by Yoonkh
데이터 지속성
구조화된 파일
데이터베이스 라이브러리
파이썬 데이터베이스 API는 파이선에서 데이터베이스에 접근하는 표준 인터페이스를 정의한다. PEP 249에 문서화되어 있으며, 보다 자세한 내용은 파이썬 DB-API에 대한 소개 자료에 나와 있다.
sqlite3
SQLite는 sqlite3 뒤에서 데이터베이스를 제공하는 C 라이브러리이다. 단일 파일로 데이터베이스를 저장하며 컨벤션에 따라 *.db의 확장자를 가진다.
SQLAlchemy
SQLAlchemy는 매우 인기 있는 데이터베이스 툴킷이다. Django는 자체 ORM에서 SQLAlchemy로 전환하는 옵션을 제공하며, 블로그 제작을 위한 Flask 메가 튜토리얼에서는 SQLAlchemy를 백엔드로 사용한다.
Djagno ORM
Django ORM은 데이터베이스 접근을 위해 Django에서 사용하는 인터페이스이다. Django ORM의 액티브 레코드 패턴의 구현이 아마도 여기 소개되는 라이브러리 중 루비 온레일스의 ActiveRecord 라이브러리와 가장 흡사할 것이다.
peewee
peewee는 SQL 문법을 알고 있는 상황에서 데이터베이스와 가볍게 상호작용하고 싶을 때 사용하면 좋다. 보는 그대로가 결과 그대로(What you see is what you get)즉 SQLAlchemy와 같이 테이블 구조를 추상화하는 최상위 레이어를 수동으로 작성할 필요가 없으며, Django ORM과 같이 라이브러리가 마법처럼 테이블 아래에 바탕 레이어를 만드는 일도 없다.
PonyORM
PonyORM은 쿼리 문법에 대해 다른 접근 방식을 취한다. SQL과 매우 유사한 언어나 불린 표현을 작성하는 대신, 파이썬의 제너레이터 구문을 사용한다. 맞춤형 PonyORM 엔티티를 생성할 수 있도록 돕는 그래픽 스키마 편집기도 있다.
SQLObject
2002년 10월에 공개된 SQLObject는 소개되는 ORM중 가장 오래되었다. 액티브 레코드 패턴을 구현하였으며, 구현했을 뿐아니라, SQLObject에는 SQL 로직을 파이썬에 추상화하는 방법으로 표준 연산자(==, <, <== 등)를 오버로드하는 새로운 아이디어도 적용되었다. 이 아이디어는 거의 모든 ORM 라이브러리에 구현되어 있으며, 매우 인기 있다.
Records
Records는 다양한 데이터베이스에 원시(raw) SQL 쿼리를 보낼 수 있도록 설계된 최소한의 SQL 라이브러리이다. Tublib과 SQLAlchemy와 함께 설치되며, 근사한 API와 명령줄 도구가 제공되어 SQL 클라이언트와 같이 행동하며, YAML, XLS, 기타 Tablib 형식으로 결과를 출력할 수 있다.
NoSQL 데이터베이스 라이브러리
전통적인 관계형 데이터베이스가 아닌 데이터베이스, 즉 NoSQL데이터베이스를 사용하는 사람들도 있다. PyPI를 둘러보면, 비슷한 이름을 가진 파이썬 패키지가 수없이 많아 혼란스러울 수 있다. 원하는 데이터베이스 제품과 함께 사용하기 좋은 파이썬 라이브러리가 무엇인지 살펴보자.
-
MongoDB
- 몽고DB(MongoDB)는 분산 문서 저장소이다. 고유의 필터와 쿼리 언어가 있는, 클러스터에 서식하는 거대한 파이썬 딕셔너리를 상상하면 된다.
-
카산드라
- 카산드라는 분산 테이블 저장소이다. 빠른 검색을 제공하며 열의 개수가 많아져도 무리가 없다. 조인 기능을 제공하지 않는 대신 여러 테이블의 서로 다른 열을 하나의 테이블로 묶는 기능을 제공한다.
-
HBase
- HBase는 분산 열 저장소이다. 이경우 열 저장소는 데이터가 (행 ID, 열 이름, 값)과 같이 저장되므로 웹을 구성하는 웹사이트간 네트워크 데이터와 같은 희소 배열 (sparse array) 형태의 데이터에 적합하다.
-
드루이드
- 드루이드는 분산 열저장소로서, 이벤트 데이터를 수집하는 데 사용할 수 있다. 드루이드는 열에 순서를 매기고 정렬할 수 있으며, 빠른 I/O를 가능하게 하고 작은 풋프린트를 가지도록 스토리지(storage)를 압축할 수 있다.
-
레디스
- 레디스는 분산 인메모리 키-값 저장소이다. 디스크 I/O가 없어 대기 시간이 줄어드는 게 핵심이다. 예를 들어 더 빠른 웹 조회를 위해 빈번한 쿼리 결과를 저장할 수도 있다.
-
카우치베이스
- Couchbase는 보다 SQL스러운 API를 가지는 또 다른 분산 문서 저장소이다.
-
Neo4j
- Neo4j는 그래프 형태의 관계로 객체를 저장하기 위한 그래프 데이터베이스이다.
-
LMDB
- LMDB는 메모리에 매핑된 파일을 포함하는 키-값 저장소 데이터베이스이다. 즉, 파일이 처음부터 읽혀서 데이터가 있는 부분에 도달할 필요가 없으므로 인메모리 저장소와 거의 같은 성능이 나온다.
Subscribe via RSS