[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: sqlite3
From: |
Qiantan Hong |
Subject: |
Re: sqlite3 |
Date: |
Mon, 6 Dec 2021 19:59:05 +0000 |
As for key value store, if you really want a persistent
kv store with O(1) insert, couldn’t we just use something like
the following super simple (skeleton) code?
(defvar kv-store-table)
(cl-defstruct (kv-store (:constructor make-kv-store-1)) path table)
(defun make-kv-store (path)
(let* ((kv-store (make-kv-store-1 :path path))
(kv-store-table (make-hash-table :test 'equal)))
(when (file-exists-p path)
(load-file path)
;; and some error handling to ignore clear trailing un-balanced form
;; just in case Emacs crash in the middle of a kv-put
)
(setf (kv-store-table kv-store) kv-store-table)
kv-store))
(defun compact-kv-store (kv-store)
;; dump the full content of kv-store-table at once
;; to compress the log and speed up loading
)
(defun kv-put (key value kv-store)
(with-temp-buffer
(print `(puthash ',key ',value kv-store-table) (current-buffer))
(append-to-file nil nil (kv-store-path kv-store)))
(puthash key value (kv-store-table kv-store)))
(defun kv-get (key kv-store)
(gethash key (kv-store-table kv-store)))
- Re: sqlite3, (continued)
- Re: sqlite3, Arthur Miller, 2021/12/06
- Re: sqlite3, Yuri Khan, 2021/12/06
- Re: sqlite3, Stefan Monnier, 2021/12/06
- Re: sqlite3, Qiantan Hong, 2021/12/06
- Re: sqlite3, Stefan Monnier, 2021/12/06
- Re: sqlite3, Arthur Miller, 2021/12/06
- Re: sqlite3, Arthur Miller, 2021/12/06
- Re: sqlite3, Qiantan Hong, 2021/12/06
- Re: sqlite3, Arthur Miller, 2021/12/06
- Re: sqlite3, Qiantan Hong, 2021/12/06
- Re: sqlite3,
Qiantan Hong <=
- Re: sqlite3, Karl Fogel, 2021/12/06
- Re: sqlite3, Stefan Kangas, 2021/12/06
- Re: sqlite3, Po Lu, 2021/12/06
- Re: sqlite3, Stefan Kangas, 2021/12/06
- Re: sqlite3, Jose A. Ortega Ruiz, 2021/12/06
Re: sqlite3, Stefan Kangas, 2021/12/06