#keyvalue

2025-05-18

KStorage — единый подход к key-value хранилищам на Kotlin Multiplatform

Типобезопасное Key-Value хранилище для Kotlin Multiplatform. Единый API без боли, бойлерплейта и потери рассудка Прочитать и убрать бойлерплейт из проекта

habr.com/ru/articles/910392/

#android #keyvalue_storage #keyvalue #data #store #kotlin #kotlin_multiplatform #coroutines

2025-03-12

Any deno kv experts out here?
For FLOSS ActivityPub Clients:
I am looking for best practices for a key which has a geohash as secondary index and might be searchable by Date as well, like an as `Event` with a `location`
:)

#deno #kv #keyvalue #denokv #geohash #database #activitypub

2025-03-10

Сериализованные справочники: работа без десериализации

Справочники, или словари — обычно большие объёмы статических данных, адресуемые и не модифицируемые при работе программы. Как правило, подготавливаются или загодя, при разработке, или вне программы, или в специальных её режимах. Зачастую с ними обращаются как с обычными структурами, однако можно организовывать их и иначе — так, чтобы работа с ними шла вообще без резервирования памяти и каких‑либо лишних операций, а в памяти они занимали минимально возможный объём.

habr.com/ru/articles/889500/

#сериалиация #словари #keyvalue

2025-03-02

BadgerDB как бэкенд для LDAP-каталога

Расскажем о том, как мы используем BadgerDB в качестве базы данных для LDAP-каталога, также вспомним технические основы LDAP и обсудим критерии выбра BadgerDB для наших целей.

habr.com/ru/companies/avanpost

#ldap #badgerdb #backend #go #keyvalue #lsmtree #hierarchy

2025-01-10

Божественная K-V таблица для мелочей

Во времена пика интереса к NoSQL базам данных простоватые K-V хранилища были несколько обойдены вниманием - отчасти это понятно, вещь не очень "инновационная", можно даже сказать старинная. В то же время своя "ниша" у них находится до сих пор (не считая того что они используются в более сложных БД в качестве индексов). В то же время в обычной SQL-ной базе проекта порой "не хватает" такого общего K-V хранилища для разнородных (семантически) записей. В своих проектах я такую обычно завожу. Среди коллег этот подход порой вызывает негатив :) Поясню ситуацию на примерах и попробую выписать "за и против" - а уважаемых знатоков приглашаю поделиться мнениями - особенно если у кого-то в схеме похожие таблички встречаются. Не для поиска несуществующей "истины", а ради дележа опытом и идеями. Вперед, к примерам

habr.com/ru/articles/872568/

#субд #реляционные_субд #хранение_данных #nosql #keyvalue

Melroy van den Bergmelroy@mastodon.melroy.org
2024-10-27

I believe I didn't share my blog post yet on my mastodon. So I created a new blog post 😄. It's about #valkey a great #redis replacement:

blog.melroy.org/2024/move-to-v

#keyvalue #database #redisalternate

Melroy van den Bergmelroy@mastodon.melroy.org
2024-10-11
2024-04-24

It’s incredible how open Netflix talks about internal tech. If you are interested in databases, then this blog post is amazing: https://netflixtechblog.medium.com/data-gateway-a-platform-for-growing-and-protecting-the-data-tier-f1ed8db8f5c6

I’ve been using the KVDAL and it is indeed awesome. :ablobcatheartsqueeze:

#Netflix #Database #KeyValue

2024-02-13

Что делать, когда кластер превращается в тыкву?

Когда эволюция платформы Разделение etcd. Что это значит?

habr.com/ru/companies/dbraincl

#etcd #разделение #keyvalue #миграция #высоконагруженные_проекты #kubernetes #api #хранилище_etcd #kubeapiserver #кластер

Volkan Özçelikvolkan@z2h.dev
2023-07-20

Dragonfly is a source-available, multi-threaded Redis replacement built for modern cloud workloads. Migrate in minutes, no code changes required.

dragonflydb.io

#dragonfly #redis #database #infra #CloudNative #KeyValue

Kaan Barmore-Genckaan@fosstodon.org
2023-01-20

Announcing Cuttlestore: A basic #Rust wrapper for generic #KeyValue stores like Redis. You can use it with different stores selected at runtime. github.com/SeriousBug/cuttlest

Currently supported backends are Redis, Sqlite, a basic filesystem store, and a super efficient in-memory store.

The main goal is using it to build apps that can be used with different stores to suit different deployments. Like using Sqlite for a small deployment and Redis for one that needs to be scalable.

2021-09-06
Key-value data in Common Lisp

tags: #commonlisp #keyvalue #plist

I enjoy using key-value data in dynamic languages. For example, in Python, I can create key-value data for storing the metadata of a document as shown below. I don’t discuss why I don’t use struct, class, named tuple in this post.

doc_metadata = {"title": "The Rust Programming Language",  
                             "type": "book", 
                             "number-of-pages": 584, 
                             "authors": ["Steve Klabnik", 
                                                "Carol Nichols", 
                                                "contributions"]}

I can code read/write a value easily, for example:

# Write
doc_metadata["type"] = "text book"

# Read
print(doc_metadata["type"])

In Perl and Ruby, we can use Hash, which is almost the same thing as Dict in Python. In JavaScript, we can use an object.

Common Lisp is different. We can use a hash table, but it is not as convenient as Dict in Python.

(let ((doc-metadata (make-hash-table)))
  (setf (gethash :title doc-metadata) "The Rust Programming Language")
  (setf (gethash :type doc-metadata) :BOOK)
  (setf (gethash :number-of-pages doc-metadata) 584)
  (setf (gethash :authors doc-metadata) '("Steve Klabnik"
                                                                      "Carol Nichols" 
                                                                      "contributions")))

Besides construction, printing a hash table is not so convenient. Maybe one can create a function or macro to make creating/printing a hash table convenient. I still felt that I abused Common Lisp.

My code is usually too buggy when I keep mutating the same variable. So I prefer using an immutable data structure to prevent me from messing things up. Moreover, my key-value data usually do not have more than five keys. So I don’t strictly need to use an efficient data structure, namely, hash table or binary search tree. So I use alist (assosiation list). I can construct a list like below:

(setq doc-metadata '((:title . "The Rust Programming Language")
                     (:type . :BOOK)
                     (:number-of-pages . 542) 
                     (:authors . '("Steve Klabnik"
                                   "Carol Nichols" 
                                   "contributions"))))

IMO, it looks concise and convenient. We can retrieve key-value pair with a specific key using the assoc function, which I suppose it does linear search. Linear search can be slow. However, my alist doesn’t have a lot of keys.

Instead of replacing a value with another value, I can add a new key-value pair with an existing key, for example:

(setq another-doc-metadata (acons :type :TEXT-BOOK doc-metadata))

By retrieving the value of :type using assoc, we get the new value because assoc function retrieves the first key found in alist, for example:

(cdr (assoc :type another-doc-metadata))
;; OUTPUT => :TEXT-BOOK

However, with function calls instead of number/string literal, alist doesn’t look concise anymore, for example:

(list (cons :title (get-title x y z))
       (cons :type (get-type x))
       (cons :number-of-pages (get-number-of-pages a b c)) 
       (cons :authors (get-authors c d)))

plist looks much more concise, for example:

(setq doc-metadata (list :title (get-title x y z)
       :type (get-type x)
       :number-of-pages (get-number-of-pages a b c) 
       :authors (get-authors c d)))

I can retrieve a value corresponding to a key easily by getf function. For example:

(getf doc-metadata :type)

A new value can be replaced the old value by setf, example:

(setf (getf doc-mentadata :type) :TEXT-BOOK)

setf is different from acons since acons doesn’t mutate the existing list, setf does. Therefore plist is not exactly what I’m looking for.

Maybe the best way is using an Alexandria function for converting plist ot alist as Michał “phoe” Herda suggested.

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst