A record-oriented store built on FoundationDB
Branch: master
Clone or download
amouehsan Merge pull request #381 from alecgrieser/00085-meta-data-validator
Resolves #85: Create a validator to check if a new meta-data is a valid evolution of an old one
Latest commit aca18fd Feb 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea Resolves #249: Collating index (#307) Feb 11, 2019
build Resolves #326: Make external links in our Javadoc work Jan 26, 2019
docs Resolves #85: Create a validator to check if a new meta-data is a val… Feb 15, 2019
examples Resolves #302: Bump PMD version to 6.10.0 Jan 16, 2019
fdb-extensions Merge pull request #350 from nschiefer/byte-scan-limit Feb 1, 2019
fdb-record-layer-core-shaded Resovles #329: Include fdb-extensions in shaded jars to avoid leaking… Jan 18, 2019
fdb-record-layer-core Resolves #85: Create a validator to check if a new meta-data is a val… Feb 15, 2019
fdb-record-layer-icu Resolves #249: Collating index (#307) Feb 11, 2019
gradle Resolves #85: Create a validator to check if a new meta-data is a val… Feb 15, 2019
.gitignore Fixes #167: Figure out whether .idea/encodings.xml belongs in source … Nov 28, 2018
ACKNOWLEDGEMENTS Resolves #249: Collating index (#307) Feb 11, 2019
CODE_OF_CONDUCT.md initial repository commit Oct 10, 2018
CONTRIBUTING.md added a script that is run at release time to regenerate the release … Jan 19, 2019
LICENSE initial repository commit Oct 10, 2018
README.md Grammatical correction Jan 16, 2019
build.gradle Resolves #85: Create a validator to check if a new meta-data is a val… Feb 15, 2019
build.py added a script that is run at release time to regenerate the release … Jan 19, 2019
gradle.properties Resolves #165: Is there a better way to do FDBTypedRecordStore? Jan 11, 2019
gradlew initial repository commit Oct 10, 2018
gradlew.bat initial repository commit Oct 10, 2018
settings.gradle Resolves #249: Collating index (#307) Feb 11, 2019

README.md

FoundationDB Record Layer

The Record Layer is a Java API providing a record-oriented store on top of FoundationDB, (very) roughly equivalent to a simple relational database, featuring:

  • Structured types - Records are defined and stored in terms of protobuf messages.
  • Indexes - The Record Layer supports a variety of different index types including value indexes (the kind provided by most databases), rank indexes, and aggregate indexes. Indexes and primary keys can be defined either via protobuf options or programmatically.
  • Complex types - Support for complex types, such as lists and nested records, including the ability to define indexes against such nested structures.
  • Queries - The Record Layer does not provide a query language, however it provides query APIs with the ability to scan, filter, and sort across one or more record types, and a query planner capable of automatic selection of indexes.
  • Many record stores, shared schema - The Record Layer provides the the ability to support many discrete record store instances, all with a shared (and evolving) schema. For example, rather than modeling a single database in which to store all users' data, each user can be given their own record store, perhaps sharded across different FDB cluster instances.
  • Very light weight - The Record layer is designed to be used in a large, distributed, stateless environment. The time between opening a store and the first query is intended to be measured in milliseconds.
  • Extensible - New index types and custom index key expressions may be dynamically incorporated into a record store.

The Record Layer may be used directly or provides an excellent foundational layer on which more complex systems can be constructed.

Documentation