database 3

[iOS] CoreData: Concurrency & Performance

Concurrency 이번엔 개발자들에게 엄청난 이점을 가져다 줌과 동시에 엄청난 짐을 안겨주는 멀티 쓰레딩에 관한 얘기다. CoreData는 Cocoa 플랫폼에서 제공하여 코드의 양을 줄이고, 사용하기 편한 데이터베이스이다. CoreData를 Concurrency하게 사용하면서 성능을 향상시키는 방법에 대해 알아 보겠다. 일단 CoreData에서는 2가지 타입의 Concurrency 옵션을 제공한다. NSMainQueueConcurrencyType와 NSPrivateQueueConcurrencyType이다. NSMainQueueConcurrencyType는 앱의 main therad에 의해서 사용되어진다. NSPrivateQueueConcurrencyType는 NSManagedObjectContext ..

[Data Structure] B-tree 정의 및 장/단점

검색을 위한 자료구조 중에 잠재력이 가장 큰 것은 역시 트리이다. 그 중 이번 포스팅에서는 B-tree에 대해 알아볼 것이다. B-tree는 주로 데이터베이스에서 인덱스를 저장할 때, 많이 사용된다. 이번 포스팅을 찾은 사람 중에 인덱스 관련 글을 보던 중, B-tree에 대해 궁금해져 찾아온 사람도 있을 것이다. 그럼 B-tree에 대해 알아보자. B-tree의 정의- 모든 노드는 최대 m개의 자식들을 가진다.- 루트노드와 리프노드가 아닌 모든노드는 최소 m/2개의 자식을 가진다.- 루트노드는 최소 2개 이상의 자식을 가진다.- k개의 자식을 가진 리프노드가 아닌 노드는 k-1개의 키를 가진다.- 모든 리프노드들은 같은 높이에 있어야 한다.- 모든 노드들은 키와 자식노드에 대한 포인터로 이루어져 있다...

[Database] 데이터베이스 인덱싱이란?

최근 메신저 프로젝트를 진행하면서 메시지 관련 대용량 데이터 처리를 위해 프로파일링을 통한 성능 최적화 작업을 주로 업무로 하게 되었다. 물론 그 중 단연 DB 튜닝도 작업 내역 중에 포함되었다. 그러던 중 학부 시절에 들어 본듯한 단어가 하나 있었다. '인덱싱' 뭐라도 쓰려면 알고 써야한다는 지론에 따라 '인덱싱'에 대해 구글링하고 공부한 내용을 이번 포스팅에서 정리하려고 한다. 누구나 필자처럼 DB 튜닝을 통해 성능 최적화를 하고자 한다면 이번 글을 간략하게나마 읽어 볼 필요가 있다. 먼저 이 글을 읽는 사람은 기본적인 DB의 구조와 사용법을 안다는 가정하에 시작한다. 인덱싱은 말 그대로 DB에 색인을 남기는 것이다. 왜 색인을 남길까? 책에서 원하는 항목을 찾기 위해 첫페이지에서부터 찾는 것보다 색..