맨위로가기

LevelDB

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

LevelDB는 키와 값을 바이트 배열 형태로 저장하는, 구글에서 개발된 오픈 소스 키-값 저장소이다. 일괄 쓰기, 압축을 지원하며, SQL 데이터베이스가 아니므로 관계형 모델이나 SQL 쿼리, 인덱스를 지원하지 않는다. 2011년에 개발되었으며, 구글 크롬의 IndexedDB 백엔드, Riak, 비트코인 코어, 마인크래프트 베드락 에디션 등 다양한 분야에서 활용된다. 구글에서 공개한 벤치마크에 따르면, LevelDB는 쓰기 및 순차적 읽기 작업에서 SQLite 및 Kyoto Cabinet보다 뛰어난 성능을 보이지만, 데이터베이스 손상 버그가 보고된 사례가 있다.

더 읽어볼만한 페이지

  • 키-값 데이터베이스 - Memcached
    Memcached는 웹사이트의 데이터베이스 부하를 줄여 응답 시간을 개선하는 분산 메모리 객체 캐싱 시스템으로, 키-값 연관 배열 형태로 RAM에 데이터를 저장하여 빠른 접근성을 제공한다.
  • 키-값 데이터베이스 - 파운데이션DB
    파운데이션DB는 키-값 저장소를 기반으로 트랜잭션 및 ACID 속성을 지원하는 분산 데이터베이스 시스템으로, 높은 동시성과 유연성을 제공하며 오픈 소스화되었다.
  • 임베디드 데이터베이스 - SQLite
    SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다.
  • 임베디드 데이터베이스 - DBM (컴퓨팅)
    DBM은 1979년 켄 톰프슨이 개발한 데이터베이스 엔진으로, 기본 키를 사용하여 데이터를 저장하고 해시 함수를 통해 빠른 검색을 지원하며, 다양한 후속 구현체가 존재한다.
  • 데이터베이스 엔진 - 파일메이커
    파일메이커는 데이터베이스 관리 및 공유를 위한 소프트웨어로, FileMaker Pro를 통해 커스텀 앱을 제작하고 FileMaker Server로 LAN 환경에서 데이터베이스를 공유 및 백업하며, FileMaker Go 앱과 FileMaker WebDirect를 통해 모바일 및 웹 브라우저에서 데이터베이스 솔루션을 활용하고 Claris Connect로 엔터프라이즈 앱과의 데이터 통합을 지원한다.
  • 데이터베이스 엔진 - MyISAM
    MyISAM은 MySQL 데이터베이스 시스템에서 사용되던 스토리지 엔진으로, 데이터 파일, 인덱스 파일, 테이블 정의 파일로 구성되어 읽기 작업에 최적화되었으나 트랜잭션과 외래 키를 지원하지 않아 데이터 무결성 유지가 어렵고, 현재는 InnoDB 엔진으로 대체되었지만 MariaDB에서는 개선 작업이 지속되고 있다.
LevelDB - [IT 관련 정보]에 관한 문서
기본 정보
이름LevelDB
종류데이터베이스 라이브러리
개발자제프 딘, Sanjay Ghemawat, Google Inc.
프로그래밍 언어C++
라이선스New BSD License
크기
바이너리 크기350 kB

2. 기능

LevelDB는 키와 값을 바이트 배열 형태로 저장하며, 데이터를 키를 기준으로 정렬한다. 일괄 쓰기, 전방/후방 반복, 구글의 스내피 압축 라이브러리를 통한 데이터 압축을 지원한다.[5]

LevelDB는 SQL 데이터베이스가 아니다. 다른 NoSQLdbm 스토어들처럼 관계형 데이터 모델을 갖고 있지 않으며 SQL 쿼리를 지원하지 않는다. 인덱스도 지원하지 않는다. 서버 또는 명령 줄 인터페이스가 없기 때문에 애플리케이션은 LevelDB를 라이브러리로 사용한다.[5]

3. 역사

LevelDB는 구글빅테이블 데이터베이스 시스템의 개념을 기반으로 한다. 빅테이블 시스템의 테이블 구현은 2004년경부터 개발되었으며, LevelDB 코드와는 다른 구글 내부 코드 기반을 사용한다. 해당 코드 기반은 자체적으로 오픈 소스화되지 않은 여러 구글 코드 라이브러리에 의존하기 때문에 해당 코드를 직접 오픈 소스화하는 것은 어려웠다. 제프 딘과 산제이 게마왓은 최소한의 종속성을 가지며 오픈 소스화에 적합하고, IndexedDB 구현을 위해 크롬에서 사용하기에도 적합한 빅테이블 태블릿 스택과 유사한 시스템을 만들고 싶었다. 그들은 2011년 초부터 LevelDB를 작성했으며, 빅테이블 태블릿 스택과 일반적인 디자인은 같지만, 코드는 공유하지 않았다.[6]

4. 활용

LevelDB는 구글 크롬에서 IndexedDB의 백엔드로 사용되며, Riak에서 지원하는 백엔드 중 하나이다.[7] 비트코인 코어와 go-ethereum은 LevelDB를 사용하여 블록체인 메타데이터를 저장한다.[8] ''마인크래프트 베드락 에디션''은 청크 및 엔티티 데이터 저장을 위해 수정된 버전을 사용한다.[9] 오토데스크 오토캐드 2016 또한 LevelDB를 사용한다.

5. 성능

구글은 LevelDB의 성능을 SQLite 및 Kyoto Cabinet과 다양한 시나리오에서 비교하는 벤치마크를 제공했다.[10] LevelDB는 쓰기 작업과 순차적 읽기 작업에서 SQLite와 Kyoto Cabinet보다 뛰어난 성능을 보였다. LevelDB는 또한 일괄 쓰기 작업에도 뛰어났지만, 큰 값을 처리할 때는 SQLite보다 느렸다. 현재 공개된 벤치마크는 이전 버전의 결과에서 SQLite 구성 오류가 발견된 후 업데이트되었다.[11] 업데이트된 벤치마크[12]는 LevelDB가 Berkeley DB보다 뛰어난 성능을 보이지만, OpenLDAP의 LightningDB는 읽기 작업과 일부 쓰기 유형(예: 일괄 및 동기 쓰기)에서 훨씬 빠르며(일부 시나리오에서 약 10배), 나머지 테스트에서는 거의 동일한 성능을 보인다는 것을 보여준다.

위의 모든 벤치마크는 2011년부터 2014년까지의 자료이며, 예를 들어 SQLite가 훨씬 더 효율적으로 개선되었기 때문에 역사적인 의미만 있을 수 있다.[13]

6. 버그 및 안정성

LevelDB는 데이터베이스 손상 버그가 보고된 사례가 있다.[14][15][16][17][18][19] 2014년의 한 연구에 따르면, 체크섬이 없는 파일 시스템에서 충돌이나 정전 후 데이터베이스가 손상될 수 있다고 한다.[20]

참조

[1] 웹사이트 Google Research Scientists and Engineers: Jeffrey Dean http://research.goog[...] Google, Inc
[2] 웹사이트 Research Scientists and Engineers: Sanjay Ghemawat http://research.goog[...] Google, Inc
[3] 웹사이트 Google Open-Sources NoSQL Database Called LevelDB https://web.archive.[...] 2011-07-30
[4] 웹사이트 Google Open Source Blog: LevelDB: A Fast Persistent Key-Value Store http://google-openso[...] Google, Inc
[5] 문서 LevelDB storage engine https://mariadb.com/[...]
[6] 웹사이트 LevelDB mailing list: "Current Status of LevelDB" http://groups.google[...]
[7] 문서 LevelDB Docs.basho.com 2013-09-18
[8] 웹사이트 Chapter 7. The Blockchain http://chimera.labs.[...] 2015-01-08
[9] 웹사이트 Bedrock Edition level format https://minecraft.wi[...] 2023-09-24
[10] 웹사이트 LevelDB Benchmarks https://web.archive.[...] Google, Inc.
[11] 웹사이트 LevelDB Benchmark discussion http://sqlite.106534[...]
[12] 웹사이트 Database Microbenchmarks https://web.archive.[...] Symas Corp. 2014-08-09
[13] 웹사이트 Measuring and Reducing CPU Usage in SQLite https://www.sqlite.o[...]
[14] 문서 Repairing LevelDB https://docs.basho.c[...]
[15] Github Issues · google/leveldb · GitHub https://github.com/g[...]
[16] 문서 Unrecoverable corruption in Chromium https://bugs.chromiu[...]
[17] 문서 Corruption in syncthing https://forum.syncth[...]
[18] 문서 Corruption after power loss https://github.com/g[...]
[19] 문서 Corruption in Ethereum http://ethereum.stac[...]
[20] 서적 All File Systems Are Not Created Equal: On the Complexity of Crafting Crash-Consistent Applications https://www.usenix.o[...]
[21] 웹인용 Google Open Source Blog: LevelDB: A Fast Persistent Key-Value Store http://google-openso[...] Google, Inc



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com