Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Trying to understand general goal/state/bugs of the project #190

@atsepkov

Description

@atsepkov

Hi, in my search for LMDB bindings for Rust I stumbled upon this project as one of the more actively maintained ones. What scares me is the warning on the main page not to use LMDB because of 3 major bugs. I also don't quite understand the difference between this project and lmdb-rs, which seems to be a dependency. Is this project a higher-level abstraction/ORM around lmdb-rs that aims to eventually support multiple DBs?

Are the bugs corrupting the DB in this repo or in lmdb-rs (it's hard to tell since they're tracked in bugzilla rather than on github) or are these fundamental problems with LMDB itself? What are the implications of using "SafeMode" backend performance and scalability-wise? How different is SafeMode under the hood from actual LMDB? Is SafeMode's performance better or worse than something like SQLite? Will it eat up all available RAM for my project (description below) if I deploy it on AWS micro instance?

My project is meant to run comfortably on a single AWS micro instance, it already uses SQLite (but not in a way that relies on SQL functionality), and my goal is to make it more lightweight. My data (writes) comes from various batch operations that run relatively rarely (i.e. once/day) and my main use case I want to optimize (and the reason for LMDB) is read performance (both sequential and random access). So reads are random (user-generated) and common (fetching up to 60k entries at a time), whereas writes are system-generated, scheduled, and rare. My dataset currently contains around 200k entries with potential for several million (each entry would contain around 50 fields of numeric data - which I will serialize).

How likely am I to get bitten by the crashes/bugs you mention in the use case I described? What are the implications? Total DB corruption? Is it recoverable? Can corruption/crash happen on read operations? If these bugs are limited to rkv, would you recommend I use lmdb-rs directly instead? Would you recommend staying from LMDB altogether regardless of bindings?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions