본문 바로가기
[Database] -journal 파일의 정체는 뭘까? ( + WAL, temp files ) [Database] -journal 파일의 정체는 뭘까? ( + WAL, temp files ) http://gywn.net/2013/08/let-me-intorduce-sqlite/http://www.sqlite.org/tempfiles.html Journal --journal 은 rollback journal 이다.이는 SQLite 에서 atomic commit & rollback 을 지원하기 위한 임시 파일이다.-journal 의 파일명을 갖는다. rollback journal 은 보통 transaction 이 시작될 때 생성이 되고, 보통 transaction 이 commit 또는 rollback 으로 끝날 때 삭제된다. -보통 이 journal 파일은 SQLite DB 가 open 되었을 때, .. 2019. 1. 15.
[SQLite3] 04. SQLite3 C API 기초 [SQLite3] 04. SQLite3 C API 기초 이 글은 "빠르게 활용하는 모바일 데이터베이스 SQLite3” 이란 글을 보며 필요한 내용만 정리한 글입니다.자세한 내용은 책을 구매해서 보세요 1. 데이터베이스 연결 -SQLIte3 을 사용하려면 연결(connection)을 여는(open) 과정이 필요하다.이를 위해 제공되는 함수는 sqlite3_open() 이다.첫번째 인자는 db name, 두번째 인자는 출력인자로 db handle 을 전달한다.성공시 SQLITE_OK 가 그렇지 않으면 에러값이 발생한다. -연결을 닫는 함수는 sqlite3_close() 이다.인자로 입력인자로 db handle 을 넣는다.성공시 SQLITE_OK 가 그렇지 않으면 에러값이 발생한다. -sqlite3_errms.. 2018. 5. 20.
[SQLite3] 03. SQL 고급 #2 [SQLite3] 03. SQL 고급 #2 이 글은 "빠르게 활용하는 모바일 데이터베이스 SQLite3” 이란 글을 보며 필요한 내용만 정리한 글입니다.자세한 내용은 책을 구매해서 보세요 9. 트리거 -DB TRIGGER 란 특정 테이블이나 뷰에 INSERT, DELETE, UPDATE 와 같은 데이터 조작 이벤트가 발생했을 때 자동으로 지정된 동작을 수행하게 하는 것이다. 트리거 활용 -syntaxCREATE TRIGGER [triggerName] [triggerTiming] [triggerOperation] ON [tableName]BEGIN [sqlOperations]END; triggerTiming 은 아래와 같다.BEFORE : 대상 테이블의 CUD 동작 직전에 트리거에서 지정한 동작이 수행된다.. 2018. 5. 19.
VFS 에 대해 대충 알아보장~ VFS 에 대해 대충 알아보장~ 참조 : https://www.sqlite.org/vfs.html -VFS 는 Virtual FileSystem 의 약자. -VFS 는 SQLite OS Portability layer 를 이야기한다.SQLite 구현 stack 중 하나로 OS 간에 호환성을 위한 구현이 있는 layer 이다. -SQLite module 중 어느 것도 OS 와 통신하기 위해서는 VFS 에 있는 함수를 호출해야 한다.VFS 가 해당 request 에 대한 OS 기능을 호출한다. 따라서 SQLite 를 새로운 OS 에 포팅한다는 이야기는새롭게 OS interface layer, 즉 VFS 를 다시 구현한다는 이야기와 동일하다. -정규 SQLite 소스에는 unix 와 windows 를 위한 V.. 2018. 2. 12.
[ios] NSCocoaErrorDomain Code=522 ( SQLite ) [ios] NSCocoaErrorDomain Code=522 ( SQLite ) 출처 : http://stackoverflow.com/questions/18277092/persistentstorecoordinator-sqlite-error-code522-not-an-error -SQLite 의 Error code 522 는 SQLITE_IOERR_SHORT_READ 를 의미한다. -SQLITE_IOERR_SHORT_READ 는 SQLITE_IOERR 중 하나로 VFS layer 를 통해 read 를 할 때,요청한 byte 만큼 읽지 못했을 경우 발생한다.이 현상이 발생한 이유는 db file 이 망가졌을 때(corrupted) 주로 발생한다.혹은 간헐적으로 read 도중 interrupt 가 발생했을 때.. 2018. 2. 12.
[ios/tutorial] Core Data - Creating a Managed Object Model [ios/tutorial] Core Data - Creating a Managed Object Model https://developer.apple.com/library/watchos/documentation/Cocoa/Conceptual/CoreData/KeyConcepts.html#//apple_ref/doc/uid/TP40001075-CH30-SW1 -model layer 를 관리하는 framework를 core data 라고 부른다.많은 것을 자동화시켜서 제공한다. -Core data 의 schema 는 managed object model 로 mapping 된다. ( NSManagedObjectModel )이 model 은 소위 table 이라고 부르는 entity 들의 집합이다. Creatin.. 2017. 11. 2.
[SQLite] JOIN 에 대한 이야기 [SQLite] JOIN 에 대한 이야기 -다음과 같은 JOIN 이 있다. CROSS JOIN INNER JOIN OUTER JOIN CROSS JOIN 첫번째 table 의 모든 row 와 두번쨰 table 의 모든 row 를 JOIN 한다.만약 각 table 에 x, y 개의 컬럼이 있다면, 결과 table 은 x+y 개의 컬럼이 된다.만약 각 table 에 a, b 개의 row 가 있다면, 결과 table 은 a*b 개의 row 가 된다. CROSS JOIN 은 큰 table 을 만들기 때문에 꼭 필요한 경우에만 써야 한다. SELECT … FROM table1 CROSS JOIN table2; INNER JOIN 조건에 의한 JOIN 을 수행한다.조건을 만족시키는 첫번째 table 의 row 와 .. 2017. 8. 22.
[iOS Study] 코어 데이터 [iOS Study] 코어 데이터 출처 : 아론 힐리가스의 iOS 프로그래밍 -데이터를 로컬에 저장하는 방법은 “아카이빙” 또는 “코어 데이터” 를 사용한다. -아카이빙의 가장 큰 결점은 전부 다냐 아무것도 아니냐는 특성에 있다.아카이브 안의 내용에 접근하려면 전체 파일을 언아카이브해야 한다.변경사항을 저장하려면 전체 파일을 다시 쓰기 해야 한다.반면 코어 데이터(Core Data)는 저장된 객체의 일부만 가져올 수 있다.그리고 어떤 객체를 변경한다면 파일의 해당 부분만 갱신할 수 있다.이러한 점진적 가져오기, 업데이트, 삭제, 삽입은 파일시스템과 메모리 사이를 오가는 많은 모델 객체를 가지는 경우 앱의 급격한 성능 향상을 가져올 수 있다. -코어 데이터는 객체-관계형 매핑 ( object-relatio.. 2016. 3. 25.
SQLite Bulk Insert 가장 빠른 방법은? SQLite Bulk Insert 가장 빠른 방법은? 결론 : 일반적인 Bulk Insert 보다 UNION 을 사용한 방법이 훨씬 빠르다. 일반 bulk insert SQLiteDatabase db = null;SQLiteStatement statement = null; try{db = getWritableDatabase();db.beginTransaction();statement = db.compileStatement("INSERT INTO table_name ( id, name, ... ) values( ?, ?, ... )" ); for( Item item : items ){statement.bindLong(1, item.id );statement.bindString( 2, item.name );.. 2015. 12. 18.
반응형