classic-level 으로 대체되었습니다. 자주 묻는 질문을 참조하십시오.
db = leveldown(location)db.open([options, ]callback)optionsdb.close(callback)db.put(key, value[, options], callback)optionsdb.get(key[, options], callback)optionsdb.getMany(keys[, options][, callback])db.del(key[, options], callback)optionsdb.batch(operations[, options], callback) (배열 양식)db.batch() (체인 형태)db.approximateSize(start, end, callback)db.compactRange(start, end, callback)db.getProperty(property)db.iterator([options])db.clear([options, ]callback)chainedBatchchainedBatch.put(key, value)chainedBatch.del(key)chainedBatch.clear()chainedBatch.write([options, ]callback)chainedBatch.dbiteratorfor await...of iteratoriterator.next([callback])iterator.seek(key)iterator.end([callback])iterator.dbleveldown.destroy(location, callback)leveldown.repair(location, callback) 이 모듈은 원래 levelup 의 일부 였지만 나중에 추출되었으며 현재 LevelDB에 대한 독립형 바인딩 역할을합니다.
측정 가능한 성능 이유가없는 한 leveldown 선호하는 levelup 사용하는 것이 좋습니다 . levelup 유용성과 안전에 최적화되었습니다. leveldown 인터페이스의 안전성을 향상시키기 위해 노력하고 있지만 올바른 방식으로 작업을 수행하지 않으면 노드 프로세스를 충돌시킬 수 있습니다.
leveldown 있는 알려진 안전하지 않은 작업에 대한 자세한 내용은 아래 안전 섹션을 참조하십시오.
우리는 N-API 덕분에 적어도 활성 LT 및 전류 Node.js 릴리스, 전자 5.0.0 및 미래의 Node.js 및 전자 릴리스를 지원하는 것을 목표로합니다. leveldown 의 최소 노드 버전은 10.12.0 입니다. 반대로 노드> = 12의 경우 최소 leveldown 버전은 5.0.0 입니다.
leveldown NPM 패키지는 인기있는 64 비트 플랫폼과 ARM, M1, Android 및 Alpine (무슬림)을위한 사전 빌드 바이너리와 함께 제공되며 다음과 같은 작업으로 알려져 있습니다.
leveldown 설치할 때 node-gyp-build 호환 된 바이너리가 존재하는지 확인하고 그렇지 않은 경우 컴파일 단계로의 붕괴를 확인합니다. 이 경우 유효한 node-gyp 설치가 필요합니다.
설치중인 플랫폼에 미리 건축 된 바이너리를 사용하지 않으려면 설치할 때 --build-from-source 플래그를 지정하십시오. 중 하나 :
npm install --build-from-source
npm install leveldown --build-from-source
leveldown 자체에서 작업하고 C ++ 코드를 다시 컴파일하려면 npm run rebuild 실행하십시오.
leveldown > = 5가 있는지 확인하십시오. npm ls leveldown 실행하여 확인할 수 있습니다.leveldown > = 5.3.0으로 업데이트하거나 --build-from-source 사용해야합니다.--build-from-source 사용해야했습니다. 이것은 더 이상 그렇지 않습니다.nodejs-mobile Fork 대신 Node.js Core를 위해 만들어지고 구축됩니다. 업그레이드하는 경우 : UPGRADING.md 참조하십시오.
db = leveldown(location) 새로운 leveldown 인스턴스를 반환합니다. location 열릴 LevelDB 위치를 가리키는 문자열입니다.
db.open([options, ]callback) 가게를 엽니 다. callback 함수는 데이터베이스가 성공적으로 열렸을 때 인수가 없거나 어떤 이유로 든 열린 작업에 실패한 경우 단일 error 인수가 있습니다.
options 선택적 options 인수는 다음을 포함 할 수 있습니다.
createIfMissing (부울, 기본값 : true ) : true 인 경우 아직 존재하지 않으면 지정된 위치에서 빈 데이터베이스를 초기화합니다. false 와 데이터베이스가 존재하지 않으면 open() 콜백에 오류가 발생하고 데이터베이스가 열리지 않습니다.
errorIfExists (boolean, default : false ) : true 인 경우, 지정된 위치에 데이터베이스가 존재하면 open() 콜백에 오류가 수신됩니다.
compression (부울, 기본값 : true ) : true 인 경우 모든 압축 데이터는 저장되기 전에 Snappy 압축 알고리즘을 통해 실행됩니다. Snappy는 매우 빠르며 비활성화하여 많은 속도를 얻지 않아야하므로 끄는 충분한 이유가 없으면이 켜십시오.
cacheSize (숫자, 기본값 : 8 * 1024 * 1024 = 8MB) : 자주 사용되지 않은 블록 내용이있는 메모리 인 Memory LRU 캐시의 크기 (바이트).
고급 옵션
다음 옵션은 고급 성능 튜닝을위한 것입니다. 특정 응용 프로그램에 대한 실제 혜택을 입증 할 수있는 경우에만 수정하십시오.
writeBufferSize (숫자, 기본값 : 4 * 1024 * 1024 = 4MB) : 로그의 최대 크기 (바이트) (메모리에 있고 디스크의 .log 파일에 저장). 이 크기를 넘어서 LevelDB는 로그 데이터를 정렬 된 테이블 파일의 첫 번째 레벨로 변환합니다. LevelDB 문서에서 :값이 클수록 특히 벌크 하중 동안 성능이 증가합니다. 최대 두 개의 쓰기 버퍼가 메모리에 동시에 유지 될 수 있으므로 메모리 사용을 제어하기 위해이 매개 변수를 조정할 수 있습니다. 또한, 더 큰 쓰기 버퍼는 다음에 데이터베이스가 열릴 때 더 긴 복구 시간을 초래합니다.
blockSize (숫자, 기본 4096 = 4K) : 테이블 파일을 구성하는 블록의 대략적인 크기. 압축되지 않은 데이터와 관련된 크기 (따라서 "근사"). 블록은 테이블 파일에 인덱싱되며 Entry-Lokups에는 전체 블록을 읽고 필요한 항목을 발견하기 위해 구문 분석이 포함됩니다.
maxOpenFiles (숫자, 기본값 : 1000 ) : LevelDB의 최대 파일 수는 한 번에 열릴 수 있습니다. 데이터 저장소에 대규모 작업 세트가있을 가능성이있는 경우 파일 디스크립터 휘젓기를 방지하기 위해이 값을 증가시킬 수 있습니다. 작업 세트에 필요한 파일 수를 계산하려면 전체 데이터를 'maxFileSize' 로 나눕니다.
blockRestartInterval (번호, 기본값 : 16 ) : 블록 내에서 키의 "델타 인코딩"을 다시 시작하기 전에 항목 수. 각 "재시작"포인트는 항목의 전체 키를 저장, 재시작 사이에 해당 항목의 키의 공통 접두사는 생략됩니다. 다시 시작은 비디오 인코딩에서 키 프레임 개념과 유사하며 키를 저장하는 데 필요한 공간의 양을 최소화하는 데 사용됩니다. 이는 키에서 깊은 네임 스케이싱 / 접두사를 사용할 때 특히 유용합니다.
maxFileSize (숫자, 기본값 : 2* 1024 * 1024 = 2MB) : 새 파일로 전환하기 전에 파일에 쓸 수있는 최대 바이트 양입니다. LevelDB 문서에서 :
... 더 큰 파일에서 파일 시스템이 더 효율적이면 값을 높이는 것을 고려할 수 있습니다. 단점은 압축이 길어 지연/성능 딸꾹질이 길어집니다. 이 매개 변수를 늘리는 또 다른 이유는 처음에 큰 데이터베이스를 채우는 시점일 수 있습니다.
db.close(callback) close() 는 기존 데이터베이스 개체의 인스턴스 메소드입니다. 기본 LevelDB 데이터베이스가 닫히고 조작이 성공한 경우 또는 어떤 이유로 든 작업에 실패한 경우 단일 error 인증이있는 경우 인수없이 callback 함수가 호출됩니다.
leveldown 청구중인 작업이 마감되기 전에 완료되기를 기다립니다. 예를 들어:
db . put ( 'key' , 'value' , function ( err ) {
// This happens first
} )
db . close ( function ( err ) {
// This happens second
} )db.put(key, value[, options], callback)새 항목을 저장하거나 기존 항목을 덮어 쓰십시오.
key 및 value 객체는 문자열 또는 버퍼 일 수 있습니다. 다른 객체 유형은 toString() 메소드를 사용하여 문자열로 변환됩니다. 키는 null 또는 undefined 않았을 수 있으며 toString() 로 변환 된 물체는 빈 문자열을 초래해서는 안됩니다. 값은 null 또는 undefined 되지 않을 수 있습니다. '' , [] 및 Buffer.alloc(0) 의 값 (및 이들 중 하나의 toString() 을 초래하는 모든 객체)는 제로 길이 문자 배열로 저장되므로 요청 된 유형에 따라 '' 또는 Buffer.alloc(0) 로 검색됩니다.
더 풍부한 데이터 유형 세트가 levelup 위해 제공됩니다.
options options 객체에서 현재 사용 가능한 유일한 속성은 sync 입니다 (부울, 기본값 : false ) . options 객체에서 true 의 sync 값을 제공하는 경우 LevelDB는 데이터의 동기 쓰기를 수행합니다. 노드에 관한 한 작업은 비동기식이지만. 일반적으로 LevelDB는 데이터를 운영 체제에 전달하고 즉시 작성하고 즉시 반환하지만 동기 쓰기는 fsync() 또는 이와 동등한 것을 사용하여 데이터가 실제로 디스크에 올 때까지 콜백이 트리거되지 않습니다. 동기식 파일 시스템 쓰기는 비동기 쓰기보다 상당히 느리지 만 데이터가 플러시되어 있는지 확인하려면 { sync: true } 사용할 수 있습니다.
callback 함수는 작업이 성공적이거나 어떤 이유로 든 작업에 실패한 경우 단일 error 인수가있는 경우 인수없이 호출됩니다.
db.get(key[, options], callback) key 에 의해 LevelDB 스토어에서 값을 얻으십시오.
key 객체는 문자열 또는 버퍼 일 수 있으며 undefined null 될 수 없습니다. 다른 객체 유형은 toString() 메소드를 사용하여 문자열로 변환되며 결과 문자열은 제로 길이가 아닐 수 있습니다 . 더 풍부한 데이터 유형 세트가 levelup 위해 제공됩니다.
제로 길이 문자 배열 ( null , undefined , '' , [] , Buffer.alloc(0) )로 저장된 get() 통해 가져온 값은 asBuffer: true (아래 참조)로 가져 오면 빈- String ( '' ) 또는 Buffer.alloc(0) 로 반환됩니다.
options 선택적 options 객체에는 다음을 포함 할 수 있습니다.
asBuffer (부울, 기본값 : true ) : 문자열 또는 버퍼로 항목의 value 반환할지 여부를 결정하는 데 사용됩니다. 버퍼에서 문자열로 변환하면 비용이 발생하므로 문자열이 필요한 경우 ( value 이 합법적으로 UTF8 문자열이 될 수 있음) { asBuffer: false } 와 함께 가져와야 하며이 변환 비용을 피해야합니다.fillCache (부울, 기본값 : true ) : LevelDB는 기본적으로 Memory LRU 캐시에 전화를 걸어 갈 수있는 데이터를 채우십시오. 이를 비활성화하면 fillCache false 로 설정하여 수행됩니다. 키를 찾지 못한 경우 어떤 이유로 든 작업에 실패한 경우 callback 함수가 단일 error 로 호출됩니다. 성공하면 첫 번째 인수는 null 이고 두 번째 인수는 asBuffer 옵션에 따라 문자열 또는 버퍼로서의 value 될 것입니다.
db.getMany(keys[, options][, callback]) keys 배열로 매장에서 여러 값을 얻습니다. 선택적 options 객체는 get() 에 설명 된대로 asBuffer 및 fillCache 포함 할 수 있습니다.
어떤 이유로 든 작업에 실패하면 callback 함수가 Error 로 호출됩니다. 성공하면 첫 번째 인수는 null 이고 두 번째 인수는 keys 와 같은 순서의 값 배열이 될 것입니다. 키를 찾지 못하면 관련 값이 undefined 되지 않습니다.
콜백이 제공되지 않으면 약속이 반환됩니다.
db.del(key[, options], callback) 항목을 삭제하십시오. key 객체는 문자열 또는 버퍼 일 수 있으며 undefined null 될 수 없습니다. 다른 객체 유형은 toString() 메소드를 사용하여 문자열로 변환되며 결과 문자열은 제로 길이가 아닐 수 있습니다 . 더 풍부한 데이터 유형 세트가 levelup 위해 제공됩니다.
options options 객체에서 현재 사용 가능한 유일한 속성은 sync 입니다 (부울, 기본값 : false ) . 이 옵션에 대한 자세한 내용은 db.put() 참조하십시오.
callback 함수는 작업이 성공적이거나 어떤 이유로 든 작업에 실패한 경우 단일 error 인수가있는 경우 인수없이 호출됩니다.
db.batch(operations[, options], callback) (배열 양식) 다중 풋 및/또는 델 작업을 대량으로 수행하십시오. operations 인수는 순차적으로 실행될 작업 목록을 포함하는 Array 이어야하지만, 전체적으로 원자 연산으로 수행됩니다.
각 작업은 다음 속성이있는 객체에 포함됩니다. type , key , value , 여기서 type 'put' 또는 'del' 입니다. 'del' 의 경우 value 속성은 무시됩니다.
key 또는 value ( 'put' 의 경우)이 null 또는 undefined 모든 항목으로 인해 callback 에서 오류가 반환됩니다. type 이 'put' 인'put [] '' 또는 Buffer.alloc(0) 의 value 은 제로 길이 문자 배열로 저장되므로 요청 방법에 따라 읽기 '' 또는 Buffer.alloc(0) 로 페치됩니다. 이것이 실제로 어떻게 작동하는지에 대한 전체 문서화는 levelup 참조하십시오.
선택적 options 인수는 다음을 포함 할 수 있습니다.
sync (부울, 기본값 : false ). 이 옵션에 대한 자세한 내용은 db.put() 참조하십시오. 배치가 성공한 경우 callback 함수는 인수가 없거나 어떤 이유로 든 배치에 실패한 경우 Error 발생합니다.
db.batch() (체인 형태) 새로운 chainedBatch 인스턴스를 반환합니다.
db.approximateSize(start, end, callback) approximateSize() 는 기존 데이터베이스 개체의 인스턴스 메소드입니다. [start..end) 범위에서 사용하는 파일 시스템 공간의 대략적인 바이트 수를 얻는 데 사용됩니다. 결과에는 최근에 쓰여진 데이터가 포함되지 않을 수 있습니다.
start 및 end 매개 변수는 LevelDB 저장소에서 키를 나타내는 문자열 또는 버퍼 일 수 있습니다.
어떤 이유로 든 작업에 실패하면 callback 함수가 단일 error 로 호출됩니다. 성공하면 첫 번째 인수는 null 이고 두 번째 인수는 대략적인 크기입니다.
db.compactRange(start, end, callback) compactRange() 는 기존 데이터베이스 개체의 인스턴스 메소드입니다. [start..end) 범위에서 데이터베이스 압축을 수동으로 트리거하는 데 사용됩니다.
start 및 end 매개 변수는 LevelDB 저장소에서 키를 나타내는 문자열 또는 버퍼 일 수 있습니다.
callback 함수는 작업이 성공적이거나 어떤 이유로 든 작업에 실패한 경우 단일 error 인수가있는 경우 인수없이 호출됩니다.
db.getProperty(property) getProperty LevelDB에서 내부 세부 정보를 얻는 데 사용될 수 있습니다. 유효한 속성 문자열이 발행되면 읽기 쉬운 문자열이 반환됩니다 (이 방법은 동기입니다).
현재 유효한 속성은 다음과 같습니다.
leveldb.num-files-at-levelN : 레벨 n 의 파일 수를 반환합니다. 여기서 n은 유효한 레벨 (예 : "0")을 나타내는 정수입니다.
leveldb.stats : LevelDB의 내부 작업에 대한 통계를 설명하는 멀티 라인 문자열을 반환합니다.
leveldb.sstables : 현재 데이터베이스의 내용을 구성하는 모든 SSTABLE 를 설명하는 멀티 라인 문자열을 반환합니다.
db.iterator([options]) 새 iterator 인스턴스를 반환합니다. 다음 범위 옵션을 수락합니다.
gt (보다 큰), gte (더 크거나 동일)는 반복 할 범위의 하한을 정의합니다. 키가 큰 항목만이 옵션이 범위에 포함됩니다. reverse=true 일 때 순서가 반대로되지만 반복 된 항목은 동일합니다.lt (미만), lte (미만 또는 평등)는 반복 할 범위의 더 높은 경계를 정의합니다. 키가 작거나 동일하지 않은 항목만이 옵션이 범위에 포함됩니다. reverse=true 일 때 순서가 반대로되지만 반복 된 항목은 동일합니다.reverse (부울, 기본값 : false ) : 반복 항목을 역 순서로 반복합니다. 역방향 추구가 앞으로 찾는 것보다 느리게 될 수 있음을 조심하십시오.limit (번호, 기본값 : -1 ) :이 반복자가 수집 한 항목 수를 제한합니다. 이 숫자는 최대 항목 수를 나타내며 먼저 범위의 끝까지 도달하면 도달하지 못할 수 있습니다. -1 의 값은 제한이 없음을 의미합니다. reverse=true 일 때 가장 높은 키가 가장 높은 키가있는 항목이 가장 낮은 키 대신 반환됩니다. 범위 옵션 외에도 iterator() 다음 옵션을 취합니다.
keys (부울, 기본값 : true ) : 각 항목의 키를 반환할지 여부. false 로 설정되면 iterator.next(callback) 로 호출하면 정의 undefined 값이있는 키를 산출합니다. 키가 무엇인지 신경 쓰지 않으면 효율성이 적습니다.values (부울, 기본값 : true ) : 각 항목의 값을 반환할지 여부. false 로 설정되면 iterator.next(callback) 로 호출하면 undefined 값 의 값을 산출합니다.keyAsBuffer (부울, 기본값 : true ) : 각 항목의 키를 버퍼 또는 문자열로 반환할지 여부. 버퍼에서 문자열로 변환하면 비용이 발생하므로 문자열이 필요한 경우 (및 key 합법적으로 UTF8 문자열이 될 수 있음) 하나로 가져와야합니다.valueAsBuffer (부울, 기본값 : true ) : 각 항목의 값을 버퍼 또는 문자열로 반환할지 여부.fillCache (부울, 기본값 : false ) : LevelDB의 LRU-Cache에 데이터를 읽는 것으로 채워야하는지 여부. 1 leveldown 현재 undefined 않은 빈 문자열을 반환합니다.
db.clear([options, ]callback)모든 항목 또는 범위를 삭제합니다. 원자임을 보장하지 않습니다. 반복자와 동일한 규칙을 가진 다음 범위 옵션을 수락합니다.
gt (보다 큰), gte (더 큰 또는 동일)는 삭제 될 범위의 하한을 정의합니다. 키가 큰 항목만이 옵션이 범위에 포함됩니다. reverse=true 일 때 순서가 바뀌지 만 삭제 된 항목은 동일합니다.lt (미만), lte (미만 또는 평등)는 삭제할 범위의 더 높은 경계를 정의합니다. 키가 작거나 동일하지 않은 항목만이 옵션이 범위에 포함됩니다. reverse=true 일 때 순서가 바뀌지 만 삭제 된 항목은 동일합니다.reverse (부울, 기본값 : false ) : 역 순서로 항목을 삭제합니다. 마지막 N 항목을 제거하기 위해 limit 와 함께 효과적입니다.limit (번호, 기본값 : -1 ) : 삭제할 항목 수를 제한합니다. 이 숫자는 최대 항목 수를 나타내며 먼저 범위의 끝까지 도달하면 도달하지 못할 수 있습니다. -1 의 값은 제한이 없음을 의미합니다. reverse=true 일 때 가장 높은 키가있는 항목은 가장 낮은 키 대신 삭제됩니다. 옵션이 제공되지 않으면 모든 항목이 삭제됩니다. 작업이 성공한 경우 callback 함수는 인수없이 호출되거나 어떤 이유로 든 실패한 경우 Error 발생합니다.
chainedBatchchainedBatch.put(key, value) 대기열이 배치에 put 작업을합니다. db.batch() 의 배열 형태와 동일한 규칙에 따라 key 또는 value 유효하지 않은 경우 이렇게 할 수 있습니다.
chainedBatch.del(key) 이 배치에서 del 작업을 대기합니다. key 유효하지 않으면 던질 수 있습니다.
chainedBatch.clear()이 배치에서 모든 대기열 작업을 지우십시오.
chainedBatch.write([options, ]callback)이 배치에 대한 대기열 작업을 커밋하십시오. 모든 작업은 원자 적으로 작성됩니다. 즉, 부분적으로 커밋되지 않고 성공하거나 실패합니다.
선택적 options 인수는 다음을 포함 할 수 있습니다.
sync (부울, 기본값 : false ). 이 옵션에 대한 자세한 내용은 db.put() 참조하십시오. 배치가 성공한 경우 callback 함수는 인수가 없거나 어떤 이유로 든 배치에 실패한 경우 Error 발생합니다. write 호출 된 후에는 더 이상의 작업이 허용되지 않습니다.
chainedBatch.db 이 체인 배치를 만든 db 에 대한 참조.
iterator 반복자를 사용하면 전체 매장 또는 범위를 반복 할 수 있습니다. db.iterator() 호출 될 때 생성 된 매장의 스냅 샷에서 작동합니다. 이것은 반복자에 대한 읽기가 동시 쓰기에 영향을받지 않는다는 것을 의미합니다.
for await...of 거나 수동으로 iterator.next() 연속적으로 호출하여 소비 할 수 있습니다. 후자의 모드에서는 iterator.end() 항상 호출해야합니다. 대조적으로, 루프 for await...of 마무리, 던지기, a에서 a에서 iterator.end() .
반복자는 다음 상황에서 자연스러운 목적에 도달합니다.
iterator.seek() 범위를 벗어났습니다. 반복자는 next() 진행되는시기를 추적하고 end() 호출 된 경우 동시 next() 호출을 허용하지 않으면 end end() 가 허용되는 동안 next() 진행 중이며 end end() 가 호출 된 후 next() 또는 end() 허용하지 않습니다.
for await...of iterator key 와 value 포함 된 배열을 생산합니다. key 와 value 의 유형은 db.iterator() 로 전달 된 옵션에 따라 다릅니다.
try {
for await ( const [ key , value ] of db . iterator ( ) ) {
console . log ( key )
}
} catch ( err ) {
console . error ( err )
} iterator.next([callback]) 반복자를 전진시키고 해당 키에서 항목을 산출하십시오. 오류가 발생하면 callback 함수가 Error 로 호출됩니다. 그렇지 않으면, callback null , key 및 value 받습니다. key 와 value 의 유형은 db.iterator() 로 전달 된 옵션에 따라 다릅니다. 반복자가 자연스러운 목적에 도달하면 key 와 value 모두 undefined .
콜백이 제공되지 않으면 반복자가 자연스러운 끝에 도달하면 배열 ( key 및 value 포함)에 대한 약속이 반환되거나 undefined .
참고 : 오류가 발생하고 반복자가 자연스러운 목적에 도달하더라도 항상 iterator.end() 에게 전화하십시오.
iterator.seek(key) 주어진 키 또는 가장 가까운 키로 반복자를 찾으십시오. reverse 옵션이 db.iterator() 로 전달 된 경우 iterator.next() 에 대한 후속 통화는 대상과 같은 키 또는 크기가 큰 키가 target 과 동일하거나 target 보다 동일하거나 작은 항목을 산출합니다. 암시 적 iterator.next() 호출에 for await...of 에 동일하게 적용됩니다.
gt 와 같은 범위 옵션이 db.iterator() 로 전달되고 target 해당 범위에 속하지 않으면 반복자가 자연스럽게 끝납니다.
iterator.end([callback]) 반복을 종료하고 기본 자원을 자유롭게합니다. callback 함수는 성공에 대한 인수가 없거나 어떤 이유로 든 종료가 실패한 경우 Error 없는 호출됩니다.
콜백이 제공되지 않으면 약속이 반환됩니다.
iterator.db 이 반복자를 만든 db 에 대한 참조.
leveldown.destroy(location, callback) 기존 LevelDB 데이터베이스 디렉토리를 완전히 제거하십시오. LevelDB 관련 파일 만 제거하려면 전체 디렉토리 rm 대신이 기능을 사용할 수 있습니다. 디렉토리에 LevelDB 파일 만 포함 된 경우 디렉토리 자체도 제거됩니다. 디렉토리에 추가 된 비 LevelDB 파일이있는 경우 해당 파일 및 디렉토리가 혼자 남겨집니다.
콜백은 파괴 작업이 완료되면 error 발생할 수 있습니다.
leveldown.repair(location, callback)손상된 LevelB 매장의 복원을 시도하십시오. LevelDB 문서에서 :
DB를 열 수없는 경우 데이터베이스의 많은 내용을 가능한 한 부활시키기 위해이 방법을 호출하려고 시도 할 수 있습니다. 일부 데이터가 손실 될 수 있으므로 중요한 정보가 포함 된 데이터베이스 에서이 기능을 호출 할 때주의하십시오.
스토어 디렉토리의 로그 파일에서 수리 작업에 대한 정보를 찾을 수 있습니다.
repair() 사용하여 LevelDB 로그를 테이블 파일로 압축하는 데 사용될 수도 있습니다.
수리 작업이 완료되면 콜백이 호출되며 가능한 error 인증이 있습니다.
현재 leveldown 기본 LevelDB 인스턴스의 상태를 추적하지 않습니다. 즉, 이미 열린 데이터베이스에서 open() 호출하면 오류가 발생할 수 있습니다. 마찬가지로, 비 종료 데이터베이스에서 다른 작업을 호출하면 오류가 발생할 수 있습니다.
levelup 현재 상태를 추적하고 관리하며 주 외부 운영이 leveldown 으로 전송되는 것을 방지합니다. leveldown 직접 사용하면 직접 상태를 추적하고 관리해야합니다.
leveldown Snapshots라는 LevelDB의 기능을 노출시킵니다. 이는 예를 들어 createReadStream 과 createWriteStream 동시에 할 때 쓰기 스트림에 의해 수정 된 데이터는 읽기 스트림에서 방출 된 데이터에 영향을 미치지 않음을 의미합니다. 다시 말해, LevelDB 스냅 샷은 스냅 샷이 생성 된 시점에 최신 상태를 캡처하여 스냅 샷이 후속 쓰기를 보지 않고 데이터를 반복하거나 읽을 수 있도록합니다. 스냅 샷에서 수행되지 않은 읽기는 최신 상태를 암시 적으로 사용합니다.
질문이 있으면 Github 저장소에서 문제를 열 수 있습니다.
과거 및 더 이상 활성 지원 채널에는 Freenode의 ##leveldb IRC 채널 및 Node.js LevelDB Google Group이 포함됩니다.
Level/leveldown 은 오픈 오픈 소스 프로젝트 입니다. 이것은 다음을 의미합니다.
중요하고 귀중한 기여를하는 개인은 프로젝트에 적합한대로 기여하기 위해 프로젝트에 대한 커밋 접근을받습니다. 이 프로젝트는 표준 보호 오픈 소스 프로젝트보다 개방형 위키와 비슷합니다.
자세한 내용은 기여 가이드를 참조하십시오.
이 프로젝트는 git 서브 모듈을 사용합니다. 이것은 작업을 계획하고 있다면 재귀 적으로 복제해야한다는 것을 의미합니다.
$ git clone --recurse-submodules https://github.com/Level/leveldown.git또는 복제 된 폴더 내부에서 하위 모듈을 초기화 할 수 있습니다.
$ git submodule update --init --recursivenpm version ..git push --follow-tags./prebuilds : npm run download-prebuilds 로 prebuilds를 다운로드하십시오npm run test-prebuild 로드하는지 확인하십시오canadian-pubnpm publish Open Collective에 대한 월별 기부로 우리를 지원하고 우리의 일을 계속할 수 있도록 도와주세요.
MIT
leveldown Google 및 추가 기여자의 LevelDB 및 Snappy 팀의 훌륭한 작업을 기반으로합니다. LevelDB와 Snappy는 모두 새로운 BSD 라이센스에 따라 발행됩니다. leveldown Windows 지원의 상당 부분은 Krzysztof Kowalczyk ( @kjk )의 Windows LevelDB 포트 (보관)에서 제공됩니다. Windows에서 leveldown 사용하는 경우 감사합니다!