deb_control_files:
- control
- md5sums
deb_fields:
Architecture: all
Depends: golang-golang-x-net-dev
Description: "Bindings for the LMDB C library\n Go bindings to the OpenLDAP Lightning\
\ Memory-Mapped Database (LMDB).\n Packages Functionality is logically divided\
\ into several packages.\n Applications will usually need to import lmdb but may\
\ import other\n packages on an as needed basis.\n .\n Packages in the exp/ directory\
\ are not stable and may change without\n warning. That said, they are generally\
\ usable if application\n dependencies are managed and pinned by tag/commit.\n\
\ .\n Developers concerned with package stability should consult the\n documentation.\
\ lmdb GoDoc\n (https://godoc.org/github.com/bmatsuo/lmdb-go/lmdb)\n stable (#user-content-versioning-and-stability)\n\
\ go import \"github.com/bmatsuo/lmdb-go/lmdb\"\n .\n Core bindings allowing low-level\
\ access to LMDB. lmdbscan\n GoDoc (https://godoc.org/github.com/bmatsuo/lmdb-go/lmdbscan)\n\
\ stable (#user-content-versioning-and-stability)\n go import \"github.com/bmatsuo/lmdb-go/lmdbscan\"\
\n .\n A utility package for scanning database ranges. The API is inspired by\n\
\ bufio.Scanner (https://godoc.org/bufio#Scanner) and the python cursor\n implementation\
\ (https://lmdb.readthedocs.org/en/release/#cursor-class).\n exp/lmdbpool GoDoc\n\
\ (https://godoc.org/github.com/bmatsuo/lmdb-go/exp/lmdbpool)\n experimental (#user-content-versioning-and-stability)\n\
\ go import \"github.com/bmatsuo/lmdb-go/exp/lmdbpool\"\n .\n A utility package\
\ which facilitates reuse of lmdb.Txn objects using a\n sync.Pool. Naively storing\
\ lmdb.Txn objects in sync.Pool can be\n troublesome. And the lmdbpool.TxnPool\
\ type has been defined as a\n complete pooling solution and as reference for\
\ applications attempting\n to write their own pooling implementation.\n .\n The\
\ lmdbpool package is relatively new. But it has a lot of potential\n utility.\
\ And once the lmdbpool API has been ironed out, and the\n implementation hardened\
\ through use by real applications it can be\n integrated directly into the lmdb\
\ package for more transparent\n integration. Please test this package and provide\
\ feedback to speed\n this process up. exp/lmdbsync GoDoc\n (https://godoc.org/github.com/bmatsuo/lmdb-go/exp/lmdbsync)\n\
\ experimental (#user-content-versioning-and-stability)\n go import \"github.com/bmatsuo/lmdb-go/exp/lmdbsync\"\
\n .\n An experimental utility package that provides synchronization necessary\n\
\ to change an environment's map size after initialization. The package\n provides\
\ error handlers to automatically manage database size and retry\n failed transactions.\n\
\ .\n The lmdbsync package is usable but the implementation of Handlers are\n\
\ unstable and may change in incompatible ways without notice.\n The use cases\
\ of dynamic map sizes and multiprocessing are niche and\n the package requires\
\ much more development driven by practical feedback\n before the Handler API\
\ and the provided implementations can be\n considered stable. Key Features:\
\ Idiomatic API inspired by BoltDB\n (https://github.com/boltdb/bolt) with automatic\
\ commit/rollback of\n transactions. The goal of lmdb-go is to provide idiomatic\
\ database\n interactions without compromising the flexibility of the C API.\n\
\ .\n NOTE: While the lmdb package tries hard to make LMDB as easy to\n use as\
\ possible there are compromises, gotchas, and caveats that\n application developers\
\ must be aware of when relying on LMDB to store\n their data. All users are\
\ encouraged to fully read the documentation\n (https://godoc.org/github.com/bmatsuo/lmdb-go/lmdb)\
\ so they are aware\n of these caveats.\n .\n Where the lmdb package and its implementation\
\ decisions do not\n meet the needs of application developers in terms of safety\
\ or\n operational use the lmdbsync package has been designed to wrap lmdb and\n\
\ safely fill in additional functionality. Consult the documentation\n (https://godoc.org/github.com/bmatsuo/lmdb-go/exp/lmdbsync)\
\ for more\n information about the lmdbsync package. API coverage The lmdb-go\n\
\ project aims for complete coverage of the LMDB C API (within reason).\n Some\
\ notable features and optimizations that are supported: \u2022 Idiomatic\n subtransactions\
\ (\"sub-updates\") that allow the batching of updates.\u2022\n Batch IO on databases\
\ utilizing the MDB_DUPSORT and MDB_DUPFIXED flags.\u2022\n Reserved writes than\
\ can save in memory copies converting/buffering into\n []byte. For tracking\
\ purposes a list of unsupported features is kept in\n an issue (https://github.com/bmatsuo/lmdb-go/issues/1).\
\ Zero-copy reads\n Applications with high performance requirements can opt-in\
\ to fast,\n zero-copy reads at the cost of runtime safety. Zero-copy behavior\
\ is\n specified at the transaction level to reduce instrumentation overhead.\n\
\ .\n ``` err := lmdb.View(func(txn *lmdb.Txn) error {\n // RawRead enables\
\ zero-copy behavior with some serious caveats.\n // Read the documentation\
\ carefully before using. txn.RawRead = true\n val, err := txn.Get(dbi, []byte(\"\
largevalue\"), 0) // ...\n .\n }) ``` Documentation Comprehensive documentation\
\ and examples\n are provided to demonstrate safe usage of lmdb. In addition\
\ to\n godoc (https://godoc.org/github.com/bmatsuo/lmdb-go) documentation,\n implementations\
\ of the standand LMDB commands (mdb_stat, etc) can be found\n in the cmd/ (cmd/)\
\ directory and some simple experimental commands can be\n found in the exp/cmd/\
\ (exp/cmd) directory. Aside from providing minor\n utility these programs are\
\ provided as examples of lmdb in practice.\n LMDB compared to BoltDB: BoltDB\
\ is a quality database with a design\n similar to LMDB. Both store key-value\
\ data in a file and provide ACID\n transactions. So there are often questions\
\ of why to use one database\n or the other. Advantages of BoltDB\u2022 Nested\
\ databases allow for\n hierarchical data organization.\u2022 Far more databases\
\ can be accessed\n concurrently.\u2022 Operating systems that do not support\
\ sparse files do\n not use up excessive space due to a large pre-allocation of\
\ file space.\n The exp/lmdbsync package is intended to resolve this problem with\n\
\ LMDB but it is not ready.\u2022 As a pure Go package bolt can be easily\n cross-compiled\
\ using the go toolchain and GOOS/GOARCH variables.\u2022 Its\n simpler design\
\ and implementation in pure Go mean it is free of many\n caveats and gotchas\
\ which are present using the lmdb package. For more\n information about caveats\
\ with the lmdb package, consult its documentation\n (https://godoc.org/github.com/bmatsuo/lmdb-go/lmdb).Advantages\
\ of LMDB\u2022\n Keys can contain multiple values using the DupSort flag.\u2022\
\ Updates can\n have sub-updates for atomic batching of changes.\u2022 Databases\
\ typically\n remain open for the application lifetime. This limits the number\
\ of\n concurrently accessible databases. But, this minimizes the overhead of\n\
\ database accesses and typically produces cleaner code than an equivalent\n BoltDB\
\ implementation.\u2022 Significantly faster than BoltDB. The raw\n speed of\
\ LMDB easily surpasses BoltDB. Additionally, LMDB provides\n optimizations ranging\
\ from safe, feature-specific optimizations to\n generally unsafe, extremely situational\
\ ones. Applications are free to\n enable any optimizations that fit their data,\
\ access, and reliability\n models.\u2022 LMDB allows multiple applications to\
\ access a database\n simultaneously. Updates from concurrent processes are synchronized\
\ using\n a database lock file.\u2022 As a C library, applications in any language\n\
\ can interact with LMDB databases. Mission critical Go applications can\n use\
\ a database while Python scripts perform analysis on the side.Build\n There is\
\ no dependency on shared libraries. So most users can simply\n install using\
\ go get.\n .\n go get github.com/bmatsuo/lmdb-go/lmdb\n .\n On FreeBSD 10, you\
\ must explicitly set CC (otherwise it will fail with\n a cryptic error), for\
\ example: CC=clang go test -v ./...\n .\n Building commands and running tests\
\ can be done with go or with make:\n make bin ; make test ; make check ; make\
\ all\n .\n On Linux, you can specify the pwritev build tag to reduce the number\n\
\ of syscalls required when committing a transaction. In your own package\n you\
\ can then do go build -tags pwritev .\n .\n to enable the optimisation. DocumentationGo\
\ doc The go doc documentation\n available on godoc.org (https://godoc.org/github.com/bmatsuo/lmdb-go)\n\
\ is the primary source of developer documentation for lmdb-go.\n It provides\
\ an overview of the API with a lot of usage examples.\n Where necessary the documentation\
\ points out differences between\n the semantics of methods and their C counterparts.\
\ LMDB The\n LMDB homepage (http://symas.com/mdb/) and mailing list (archives\n\
\ (http://www.openldap.org/lists/openldap-technical/)) are the official\n source\
\ of documentation regarding low-level LMDB operation and internals.\n .\n Along\
\ with an API reference LMDB provides a high-level summary\n (http://symas.com/mdb/doc/starting.html)\
\ of the library. While lmdb-go\n abstracts many of the thread and transaction\
\ details by default the rest\n of the guide is still useful to compare with go\
\ doc. Versioning and\n Stability The lmdb-go project makes regular releases\
\ with IDs X.Y.Z.\n All packages outside of the exp/ directory are considered\
\ stable and\n adhere to the guidelines of semantic versioning (http://semver.org/).\n\
\ .\n Experimental packages (those packages in exp/) are not required to adhere\n\
\ to semantic versioning. However packages specifically declared to merely\n\
\ be \"unstable\" can be relied on more for long term use with less concern.\n\
\ .\n The API of an unstable package may change in subtle ways between minor\n\
\ release versions. But deprecations will be indicated at least one\n release\
\ in advance and all functionality will remain available through\n some method.\
\ License Except where otherwise noted files in the lmdb-go\n project are licensed\
\ under the BSD 3-clause open source license.\n .\n The LMDB C source is licensed\
\ under the OpenLDAP Public License.\n Linksgithub.com/bmatsuo/raft-mdb (https://github.com/bmatsuo/raft-mdb)\n\
\ (godoc (https://godoc.org/github.com/bmatsuo/raft-mdb))\n An experimental backend\
\ for github.com/hashicorp/raft\n (https://github.com/hashicorp/raft) forked from\n\
\ github.com/hashicorp/raft-mdb (https://github.com/hashicorp/raft-mdb).\n github.com/bmatsuo/cayley/graph/lmdb\n\
\ (https://github.com/bmatsuo/cayley/tree/master/graph/lmdb)\n (godoc (https://godoc.org/github.com/bmatsuo/cayley/graph/lmdb))\n\
\ Experimental backend quad-store for github.com/google/cayley\n (https://github.com/google/cayley)\
\ based off of the BoltDB implementation\n (https://github.com/google/cayley/tree/master/graph/bolt)."
Homepage: https://github.com/bmatsuo/lmdb-go
Installed-Size: '679'
Maintainer: Debian Go Packaging Team <team+pkg-go@tracker.debian.org>
Package: golang-github-bmatsuo-lmdb-go-dev
Priority: optional
Section: devel
Source: golang-github-bmatsuo-lmdb-go
Version: 1.8.0+git20170215.a14b5a3-4
srcpkg_name: golang-github-bmatsuo-lmdb-go
srcpkg_version: 1.8.0+git20170215.a14b5a3-4