kvass

a personal key-value store (by maxmunzel)

Kvass Alternatives

Similar projects and alternatives to kvass

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better kvass alternative or higher similarity.

kvass reviews and mentions

Posts with mentions or reviews of kvass. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-07-24.
  • Show HN: Kvass,一个个人键值存储器 (Show HN: Kvass, a personal key-value store)
    1 project | /r/hnzh | 24 Jul 2022
  • GitHub - maxmunzel/kvass: a personal key-value store
    1 project | /r/commandline | 24 Jul 2022
  • Show HN: Kvass, a personal key-value store
    1 project | /r/patient_hackernews | 24 Jul 2022
    1 project | /r/hackernews | 24 Jul 2022
    1 project | /r/hypeurls | 24 Jul 2022
    7 projects | news.ycombinator.com | 24 Jul 2022
    Hi mbreeze!

    > this seems to just be a SQLite database with values in fields?

    Sqlite is used as a storage format ("SQLite competes with fopen()"). The key-value pairs are stored as a modified Append-Only CRDT. The LUB-Operation (to merge to states while syncing) is implemented here: https://github.com/maxmunzel/kvass/blob/e32fdabdc86b039f716c...

    > anyone with access to the file would be able to see all data stored?

    Yes, attackers with access to your fs are not part of my attacker model. I rely on disk encryption for that matter.

    > Do the clients cache data locally? It looks like you're basically syncing from the server for every request. You're already making a round trip to the server for a request anyway, so why not keep state only on the server? I can understand an offline-only mode, but this would require a significantly more robust sync mechanism. If this was the goal, I'd love to see this discussed more in the README too.

    The sync mechanism is actually pretty solid, as its based on CRDTs. One of the applications of kvass is central management of config files, so automatic syncing and offline fallback are important.

    > What is the purpose of the ProcessID?

    The Counter Variable implements a rudimentary implementation of Lamport clocks. To get a total order from Lamport clocks, you need ordered, distinct process ids. The process id's don't really need to mean anything and the Lamport clock is itself just a fallback for the case that the wall-clock timestamps collide (see the Max() function), so it's practical to just draw them randomly.

    > I didn't see any authn/authz in the requests. You're also unmarshalling random data from the request w/o confirming that it is valid first. This seems risky to me and could potentially crash the server if I were to send it random data.

    Authentication is provided by the GCM mode of AES. As I decrypt (and thereby verify) early, I can assume to work on trustworthy payloads. GCM is also non-malleable unlike for example CBC or CTR.

    As suggested by losfair, I'll switch to PSK TLS as soon as it's available or just put HTTPS in front of the end-points. But that's not high-priority right now.

  • Hacker News top posts: Jul 24, 2022
    4 projects | /r/hackerdigest | 24 Jul 2022
    Show HN: Kvass, a personal key-value store\ (51 comments)
  • A note from our sponsor - InfluxDB
    www.influxdata.com | 5 May 2024
    Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality. Learn more →

Stats

Basic kvass repo stats
8
881
0.0
5 months ago

maxmunzel/kvass is an open source project licensed under MIT License which is an OSI approved license.

The primary programming language of kvass is Go.


Sponsored
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com