FoundationDB Record Layer

一个建立在 FoundationDB 上的面向记录的存储。「A record-oriented store built on FoundationDB

Github stars Tracking Chart

FoundationDB Record Layer

Record Layer 是一个 Java API,在 FoundationDB 之上提供了一个面向记录的存储,(非常)大致相当于一个简单的关系型数据库,其特点是:

  • 结构化类型 -- 记录是以 protobuf 消息来定义和存储的。
  • 索引 -- 记录层支持各种不同的索引类型,包括值索引(大多数数据库提供的那种)、等级索引和集合索引。索引和主键可以通过 protobuf 选项或编程来定义。
  • 复杂类型 -- 支持复杂类型,如列表和嵌套记录,包括针对这种嵌套结构定义索引的能力。
  • 查询 -- 记录层没有提供查询语言,但是它提供了查询 API,能够在一个或多个记录类型中进行扫描、过滤和排序,以及能够自动选择索引的查询规划器。
  • 许多记录存储,共享模式 -- 记录层提供了支持许多离散记录存储实例的能力,所有这些实例都有一个共享的(和不断发展的)模式。例如,与其建模一个单一的数据库来存储所有用户的数据,不如给每个用户提供他们自己的记录存储,也许在不同的 FDB 集群实例中进行分片。
  • 非常轻量级 -- Record 层是为了在一个大型的、分布式的、无状态的环境中使用而设计的。打开一个存储和第一次查询之间的时间打算以毫秒为单位。
  • 可扩展 -- 新的索引类型和自定义索引键表达式可以动态地纳入记录存储。
  • 记录层可以直接使用,也可以提供一个很好的基础层,在此基础上可以构建更复杂的系统。

文档


Main metrics

Overview
Name With OwnerFoundationDB/fdb-record-layer
Primary LanguageJava
Program languagePython (Language Count: 6)
PlatformBSD, Cross-platform, Linux, Mac, Windows
License:Apache License 2.0
所有者活动
Created At2018-08-02 20:59:44
Pushed At2025-04-25 14:54:40
Last Commit At
Release Count561
Last Release Name4.2.6.0 (Posted on 2025-04-16 18:09:14)
First Release Name2.1.10.0 (Posted on 2018-10-23 18:37:49)
用户参与
Stargazers Count614
Watchers Count33
Fork Count103
Commits Count4.6k
Has Issues Enabled
Issues Count1463
Issue Open Count402
Pull Requests Count1534
Pull Requests Open Count43
Pull Requests Close Count273
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

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