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
를 리턴하고 문제없이 입력됩니다. 그리고 ttl
이 3600
으로 입력되었기 때문에 해당 키의 데이터는 1시간(3600초) 이후에 만료됩니다. 우리는 keyspace를 전달했지만 사전에 준비하지 않았습니다. 위와 같이 create_if_missing
이 True
로 전달되었기 때문에 생성 후 데이터가 입력되었습니다. 이 옵션은 기본값이 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")