LevelDB     by   ohyecloudy    homepage : http://ohyecloudy.com    twitter : @ohyecloudy   아꿈사 :   http://cafe.naver.com/a...
아~ 이런 게 있구나            본 발표 목적    좀 더 쉽게 얘기하자면 ‘깊이가 없다’입니다.
따끈~      따끈~        따끈~따끈~      따끈~        따끈~2011.7.27 구글 오픈소스 블로그에 공식적으로 소개따끈~      따끈~        따끈~따끈~      따끈~        따끈...
LevelDB는  a fast and lightweight  key/value DB library                    입니다.
LevelDB는  a fast and lightweight  key/value DB library                    입니다.       NoSQL
Embedded DB                  e.g. SQLiteLevelDB는  a fast and lightweight  key/value DB library                      입니다.
LevelDB는  a fast and lightweight  NoSQL Embedded DB  key/value DB library                    입니다.
왜 만들었을까?       뭐땀시
웹 애플리케이션용 DB 때문에 웹 애플리케이션이 저장될 캐시를 결정. 지금은 브라우저(크롬, FF, IE…)가 알아서 저장. 오프라인 대비가 잘돼서 모바일에 좋다.
Web SQL Database는 탈락       SQL은 웹 개발과 맞지 않다.       ISO 표준이 존재하지만       벤더마다 다양한 SQL문을 지원
IndexedDB 가 유력    B-tree 기반 key/value 저장소    key/value면 웹 애플리케이션이    사용하기에 충분
LevelDB로 IndexedDB를 구현하려고
맛만 살짝~LevelDB 특징 보기
• Keys and values are arbitrary byte arrays.• Data is stored sorted by key.• The basic operations are Put(key,value),  Get...
• Keys and values are arbitrary byte arrays.• Data is stored sorted by key.• The basic operations are Put(key,value),  Get...
std::string value;leveldb::Status s =    db->Get(        leveldb::ReadOptions(),        key1,        &value);s = db->Put( ...
• Keys and values are arbitrary byte arrays.• Data is stored sorted by key.• The basic operations are Put(key,value),     ...
// DB에 있는 모든 key/value 순회leveldb::Iterator* it =    db->NewIterator(leveldb::ReadOptions());for (it->SeekToFirst();     it...
• Keys and values are arbitrary byte arrays.• Data is stored sorted by key.• The basic operations are Put(key,value),  Get...
leveldb::ReadOptions options;options.snapshot = db->GetSnapshot();//…// db를 업데이트한다.leveldb::Iterator* iter = db->NewIterat...
Fast를 붙일 만 해?
전체적으로 뛰어난 성능
다만 value 사이즈가 크면 성능 하락 (value 사이즈가 100,000 byte일 때 성능)구현상 key와 value를 적어도 두 번 복사하기 때문
정 리
• LevelDB는 NoSQL Embedded DB 이다.• 웹 애플리케이션용 DB 때문에 만들었다.  – IndexedDB  – 다른 곳에도 더 사용하지 않을까?• key로 정렬해서 저장한다.• 전체적으로 뛰어난 성능...
ReferencesLevelDB: A Fast Persistent Key-Value Storehttp://nosql-database.org/http://code.google.com/p/leveldb/http://en.w...
LevelDB 간단한 소개
LevelDB 간단한 소개
Upcoming SlideShare
Loading in...5
×

LevelDB 간단한 소개

6,413

Published on

Published in: Technology
0 Comments
18 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,413
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
40
Comments
0
Likes
18
Embeds 0
No embeds

No notes for slide

LevelDB 간단한 소개

  1. 1. LevelDB by ohyecloudy homepage : http://ohyecloudy.com twitter : @ohyecloudy 아꿈사 : http://cafe.naver.com/architect1.cafe 2011.08.06
  2. 2. 아~ 이런 게 있구나 본 발표 목적 좀 더 쉽게 얘기하자면 ‘깊이가 없다’입니다.
  3. 3. 따끈~ 따끈~ 따끈~따끈~ 따끈~ 따끈~2011.7.27 구글 오픈소스 블로그에 공식적으로 소개따끈~ 따끈~ 따끈~따끈~ 따끈~ 따끈~따끈~ 따끈~ 따끈~
  4. 4. LevelDB는 a fast and lightweight key/value DB library 입니다.
  5. 5. LevelDB는 a fast and lightweight key/value DB library 입니다. NoSQL
  6. 6. Embedded DB e.g. SQLiteLevelDB는 a fast and lightweight key/value DB library 입니다.
  7. 7. LevelDB는 a fast and lightweight NoSQL Embedded DB key/value DB library 입니다.
  8. 8. 왜 만들었을까? 뭐땀시
  9. 9. 웹 애플리케이션용 DB 때문에 웹 애플리케이션이 저장될 캐시를 결정. 지금은 브라우저(크롬, FF, IE…)가 알아서 저장. 오프라인 대비가 잘돼서 모바일에 좋다.
  10. 10. Web SQL Database는 탈락 SQL은 웹 개발과 맞지 않다. ISO 표준이 존재하지만 벤더마다 다양한 SQL문을 지원
  11. 11. IndexedDB 가 유력 B-tree 기반 key/value 저장소 key/value면 웹 애플리케이션이 사용하기에 충분
  12. 12. LevelDB로 IndexedDB를 구현하려고
  13. 13. 맛만 살짝~LevelDB 특징 보기
  14. 14. • Keys and values are arbitrary byte arrays.• Data is stored sorted by key.• The basic operations are Put(key,value), Get(key), Delete(key).• Multiple changes can be made in one atomic batch.• Users can create a transient snapshot to get a consistent view of data.• Forward and backward iteration is supported over the data.• Data is automatically compressed using the Snappy compression library.
  15. 15. • Keys and values are arbitrary byte arrays.• Data is stored sorted by key.• The basic operations are Put(key,value), Get(key), Delete(key).• Multiple changes can be made in one atomic batch.• Users can create a transient snapshot to get a consistent view of data.• Forward and backward iteration is supported over the data.• Data is automatically compressed using the Snappy compression library.
  16. 16. std::string value;leveldb::Status s = db->Get( leveldb::ReadOptions(), key1, &value);s = db->Put( leveldb::WriteOptions(), key2, value);s = db->Delete( leveldb::WriteOptions(), key1);
  17. 17. • Keys and values are arbitrary byte arrays.• Data is stored sorted by key.• The basic operations are Put(key,value), simple key/value store와 다른 특징. Get(key), Delete(key). a persistent ordered map• Multiple changes can be made in one atomic custom comparison function 지원. batch. range query가 싸겠다.• Users can create a transient iteration이 가능 get 이런 특징 때문에 snapshot to a consistent view of data.• Forward and backward iteration is supported over the data.• Data is automatically compressed using the Snappy compression library.
  18. 18. // DB에 있는 모든 key/value 순회leveldb::Iterator* it = db->NewIterator(leveldb::ReadOptions());for (it->SeekToFirst(); it->Valid(); it->Next()){ cout << it->key().ToString() << ": “ << it->value().ToString() << endl;}
  19. 19. • Keys and values are arbitrary byte arrays.• Data is stored sorted by key.• The basic operations are Put(key,value), Get(key), Delete(key).• Multiple changes can be made in one atomic batch.• Users can create a transient snapshot to get a consistent view of data.• Forward and backward iteration is supported over the data.• Data is automatically compressed using the Snappy compression library.
  20. 20. leveldb::ReadOptions options;options.snapshot = db->GetSnapshot();//…// db를 업데이트한다.leveldb::Iterator* iter = db->NewIterator(options);// 업데이트를 하기 전 Shapshot DB를 읽는다.delete iter;db->ReleaseSnapshot(options.snapshot);
  21. 21. Fast를 붙일 만 해?
  22. 22. 전체적으로 뛰어난 성능
  23. 23. 다만 value 사이즈가 크면 성능 하락 (value 사이즈가 100,000 byte일 때 성능)구현상 key와 value를 적어도 두 번 복사하기 때문
  24. 24. 정 리
  25. 25. • LevelDB는 NoSQL Embedded DB 이다.• 웹 애플리케이션용 DB 때문에 만들었다. – IndexedDB – 다른 곳에도 더 사용하지 않을까?• key로 정렬해서 저장한다.• 전체적으로 뛰어난 성능 – value 사이즈가 크면 성능 저하
  26. 26. ReferencesLevelDB: A Fast Persistent Key-Value Storehttp://nosql-database.org/http://code.google.com/p/leveldb/http://en.wikipedia.org/wiki/Embedded_databasehttp://kldp.org/node/123247http://www.zdnet.co.kr/news/news_view.asp?artice_id=20110801100022http://xguru.net/621http://leveldb.googlecode.com/svn/trunk/doc/index.htmlhttp://leveldb.googlecode.com/svn/trunk/doc/impl.htmlhttp://leveldb.googlecode.com/svn/trunk/doc/benchmark.htmlHacker News
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×