Key-Value DB

Key-Value DB

단순 Key-Value 쌍을 저장하고 조회할 수 있도록 구현된 데이터베이스입니다. Key-Value 쌍 데이터 집합을 관리할 수 있는 Keyspace를 개념을 가지고 있습니다. 단순한 Key-Value 데이터 저장에 적합하며 이를 이용하여 Aeca를 TTL cache처럼 활용할 수 있습니다.

데이터 입력 및 삭제

데이터 입력은 다음과 같이 KeyValueDB.put을 통해 할 수 있습니다.

from aeca import KeyValueDB, Channel
import pickle
 
channel = Channel("localhost", 10080)
kv_db = KeyValueDB(channel)
 
keyspace = "books"
book = {
    "title": "Code: The Hidden Language of Computer Hardware and Software",
    "author": "Charles Petzold"
}
isbn = "9780735611313"
data = pickle.dumps(book)
kv_db.put(keyspace, key=isbn, value=data, ttl=3600, create_if_missing=True)

실행하면 put 함수는 True를 리턴하고 문제없이 입력됩니다. 그리고 ttl3600으로 입력되었기 때문에 해당 키의 데이터는 1시간(3600초) 이후에 만료됩니다. 우리는 keyspace를 전달했지만 사전에 준비하지 않았습니다. 위와 같이 create_if_missingTrue로 전달되었기 때문에 생성 후 데이터가 입력되었습니다. 이 옵션은 기본값이 True입니다.

Keyspace를 관리하는 KeyspaceManager를 통해 목록을 확인해 보면

from aeca import KeyspaceManager
 
kv_manager = KeyspaceManager(channel)
kv_manager.list_keyspaces()

Keyspace가 정상적으로 생성되어 있음을 확인할 수 있습니다.

실행 결과
['books']

입력된 데이터는 KeyValueDB.get을 통해 확인할 수 있습니다.

data = kv_db.get(keyspace, key=isbn)
book = pickle.loads(data)
print(book)

실행하면 다음과 같이 정상적으로 값을 확인할 수 있습니다.

실행결과
{'title': 'Code: The Hidden Language of Computer Hardware and Software', 'author': 'Charles Petzold'}

입력된 데이터 삭제는 KeyValueDB.remove를 통해 삭제할 수 있습니다.

kv_db.remove(keyspace, key=isbn)

만약 keyspace도 함께 삭제하고 싶다면 다음과 같이 실행할 수 있습니다.

kv_manager.drop_keyspace("books")