SQLite 개선 사항
SQLite 개선 사항
BlackBerry Java SDK 7.0에는 SQLite 버전 3.7.2가 사용됩니다. BlackBerry Java SDK 6.0에는 SQLite 3.6.21가 사용되었습니다. SQLite의 새 기능에 대한 자세한 내용은 SQLite 설명서(www.sqlite.org)를 참조하십시오.
스키마 및 트랜잭션의 내부 데이터 구조를 저장하기 위해 SQLite 데이터베이스에 사용할 수 있는 RAM의 크기가 16MB(6.0에서 5MB)로 증가했습니다. 쿼리는 1MB까지 가능합니다. BlackBerry Java SDK 6.0의 경우 최대 쿼리 길이는 4KB였습니다. 파일 처리 한계가 64로 증가하여 BlackBerry Java SDK 7.0에서 동시에 최대 56개의 데이터베이스를 열 수 있습니다.
또한 롤백 저널 대신 사전 기록 로그를 사용할 수 있습니다. 데이터베이스에 대한 쓰기가 읽기를 방해하지 않으므로 사전 기록 로그를 통해 동시 처리 기능이 증가됩니다. journal_mode pragma에서 WAL 옵션을 설정하여 사전 기록 로그를 사용할 수 있습니다. 공유 캐시 모드를 사용하여 한 데이터베이스를 여러 곳에서 연결할 때 메모리를 더 적게 사용할 수도 있습니다.
SQLite 서비스
SQLite는 이제 서비스로 실행되며 데이터베이스 작동 시 JavaScript 코드와 원시 코드 간의 데이터 전달을 위해 런타임 브리지가 사용됩니다. 런타임 브리지를 효율적으로 사용하는 데 도움이 되는 다양한 메소드가 추가되었습니다.
데이터 삽입 또는 업데이트를 위해 준비된 문을 만들 때 Statement.executeInsert() 및 Statement.executeUpdate()를 사용하여 런타임 브리지를 통한 호출 수를 줄일 수 있습니다. 이러한 메소드는 원시 코드로 SQL 매개 변수 연결, 문 실행, 문 재설정 및 연결 삭제와 같은 작업을 수행합니다. 또한 executeInsert()는 마지막으로 삽입한 행 ID를 반환합니다.
결과 세트를 반환하지 않는 쿼리를 실행하고 매개 변수를 연결하지 않는 경우, Database.executeStatement()를 사용하여 런타임 브리지를 통한 호출을 줄일 수 있습니다. 이런 메소드는 원시 코드에서 문 준비, 문 실행, 문 마무리와 같은 작업을 수행합니다.
Statement.getCursor()를 사용하여 결과 세트를 반환하는 쿼리를 실행하는 경우, Statement.setCursorBufferSize()를 사용하여 지정된 행 수를 미리 가져올 수 있습니다. 이 메소드를 사용하면 런타임 브리지의 사용 횟수를 줄일 수 있습니다. 커서가 버퍼링된 세트를 통과하는 경우 일련의 새 행들이 미리 가져와집니다. 새 메소드 Statement.getCursorBufferSize()를 사용하여 커서가 버퍼링하는 다수의 행을 가져올 수 있습니다.
다른 쿼리에 키로서 사용할 정수 값을 가져오는 경우 Statement.getIntegers() 및 Statement.getLongs()를 사용할 수 있습니다. 이러한 메소드를 사용하면 정수 열을 간단하고 최적화된 방식으로 가져올 수 있습니다.
BLOB 처리를 위한 개선된 기능
BLOB 처리를 위한 새 메소드를 사용하면 프로그램 메모리에 전체 BLOB를 보관하지 않아도 되므로 사용 가능 동적 메모리의 크기에 의해 데이터베이스에서 읽거나 쓸 수 있는 BLOB의 크기가 제한되지 않습니다. Database.createBlobOutputStream()은 BLOB에 데이터를 쓰는 데 사용되는 OutputStream 객체를 만들고 Database.createBlobInputStream()은 BLOB의 데이터를 읽는 데 사용되는 InputStream 객체를 만듭니다.
BLOB용 공간 예약
Statement.bindZeroBlob() 메소드를 사용하여 Statement에 있는 매개 변수에 일련의 null 바이트를 연결할 수 있습니다. Database.createBlobOutputStream() 메소드를 사용하여 데이터를 BLOB에 쓴 후 Statement.execute()로 Statement를 실행하는 경우, bindZeroBlob 메소드를 사용하여 BLOB 출력에 사용할 공간을 예약할 수 있습니다.
연결 메모리 사용량 통계
새 메소드인 Database.getCacheUsed(), Database.getSchemaUsed() 및 Database.getStatementUsed()를 사용하여 각 데이터베이스 연결의 메모리 사용량을 추적할 수 있습니다.
새 메소드인 Row.getDatabaseColumnTypes()를 사용하여 행으로 지정된 SQLite 열 유형을 검색할 수 있습니다.
Pragma 지원
데이터베이스 첨부 및 분리
기존 데이터베이스 연결에 데이터베이스를 첨부하거나 분리할 수 있으며 Database.attach() 및 Database.detach()와 같은 두 개의 새 메소드가 추가되었습니다. 이러한 메소드를 사용하여 최대 10개의 데이터베이스를 연결에 첨부할 수 있습니다. SQL 문에 DETACH 명령을 사용할 수도 있지만 ATTACH 명령은 사용할 수 없습니다.
언어 데이터 정렬
버퍼링된 커서의 동작 변경
BufferedCursor.isEmpty() 메소드는 모든 환경에서 커서를 통해 이동하지 않으므로 커서 위치가 사용 가능한 마지막 행보다 하나 더 많은 경우 더 이상 false를 반환하지 않습니다.
BufferedCursor.prev() 메소드는 여러 번 호출되는 경우 커서의 위치를 최초 위치(-1)로 다시 설정합니다.
의견 제공
이 제품에 대한 의견을 제공하시려면 www.blackberry.com/docsfeedback을 방문하십시오.