FoundationDB宣布记录层支持关系数据库语义、模式管理和索引功能
洪璞瑜
2023-12-01
\u003cblockquote\u003e\n\u003cp\u003e\u003ca href=\"https://www.foundationdb.org/\"\u003eFoundationDB\u003c/a\u003e NoSQL数据库的新\u003ca href=\"https://github.com/foundationdb/fdb-record-layer/\"\u003e记录层\u003c/a\u003e支持关系数据库语义、模式管理、主索引和辅助索引以及查询功能。FoundationDB团队上个月\u003ca href=\"https://www.foundationdb.org/blog/announcing-record-layer/\"\u003e宣布\u003c/a\u003e了记录层的开源版本。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eFoundationDB是一个开源的“多模型”NoSQL数据库,由苹果公司开发,但自从FoundationDB开源以来,很多公司都为它的开发做出了贡献。FoundationDB数据库采用了云友好的“\u003ca href=\"https://en.wikipedia.org/wiki/Shared-nothing_architecture\"\u003e无共享架构\u003c/a\u003e”。FoundationDB是围绕“核心”键值数据库设计的,在“层”中提供了额外的功能,通过添加功能和数据模型来扩展功能,从而允许新的数据访问模式。记录层构建在FoundationDB之上,支持使用字段和类型、\u003ca href=\"https://foundationdb.github.io/fdb-record-layer/SchemaEvolution.html\"\u003e不断发展的模式\u003c/a\u003e、主索引和\u003ca href=\"https://foundationdb.github.io/fdb-record-layer/Extending.html\"\u003e辅助索引\u003c/a\u003e以及声明式\u003ca href=\"https://github.com/FoundationDB/fdb-record-layer/blob/master/docs/Overview.md#querying-for-records\"\u003e查询执行\u003c/a\u003e的记录。这个层是可组合的,可以通过其他系统进行扩展,从而在FoundationDB上创建新的层和应用程序类。\u003c/p\u003e\n\u003cp\u003e记录层还包括有在关系数据库中不常见的特性,例如\u003ca href=\"https://foundationdb.github.io/fdb-record-layer/Overview.html\"\u003e嵌套的数据类型\u003c/a\u003e、记录提交时间上的索引以及跨不同类型记录的索引和查询。\u003c/p\u003e\n\u003cp\u003e记录层将FoundationDB的事务语义应用于辅助索引,这意味着索引总是与数据的最新更改保持同步。由于记录层是无状态的,它可以通过简单地启动更多的数据库实例来扩展。记录层支持多租户,并隔离租户的所有数据。\u003c/p\u003e\n\u003cp\u003e记录层的其他功能包括:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e记录表示为\u003ca href=\"https://en.wikipedia.org/wiki/Protocol_Buffers\"\u003e协议缓冲区\u003c/a\u003e消息,提供行业标准的序列化和模式演化。基于协议缓冲区数据模型的事务辅助索引功能。\u003c/li\u003e\n\u003cli\u003e支持高级索引类型,如分组计数、全文索引、序号索引和可扩展函数索引。\u003c/li\u003e\n\u003cli\u003e查询规划器,用于将这些查询转换为具体的数据库操作。\u003c/li\u003e\n\u003cli\u003e扩展点,用户可以构建自定义索引维护器和查询规划功能来集成新的索引类型。\u003c/li\u003e\n\u003cli\u003e支持客户端定义的加密和压缩算法的序列化API。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e记录层和FoundationDB在苹果的生产中用于支持应用程序和服务,比如苹果的\u003ca href=\"https://developer.apple.com/icloud/cloudkit/\"\u003eCloudKit\u003c/a\u003e。\u003c/p\u003e\n\u003cp\u003e类似于记录层,FoundationDB的\u003ca href=\"https://foundationdb.github.io/fdb-document-layer/\"\u003e文档层\u003c/a\u003e是一个无状态的微服务器,它公开了一个与\u003ca href=\"https://www.mongodb.com/\"\u003eMongoDB\u003c/a\u003e API兼容的面向文档的数据库。\u003c/p\u003e\n\u003cp\u003eFoundationDB安装包支持macOS、Ubuntu、RHEL/CentOS EL6和EL7以及Windows操作系统。它还支持用于C、Python、Ruby、Java 8+和Go 1.1+编程语言的API语言绑定。该团队写了一篇\u003ca href=\"https://www.foundationdb.org/files/record-layer-paper.pdf\"\u003e文章\u003c/a\u003e描述CloudKit如何使用记录层。\u003c/p\u003e\n\u003cp\u003e如果您有兴趣了解关于FoundationDB数据库记录层特性的更多信息,请查阅以下参考资料:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://foundationdb.github.io/fdb-record-layer/GettingStarted.html\"\u003e入门指南\u003c/a\u003e,包括如何在本地环境中运行FoundationDB (FDB)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FoundationDB/fdb-record-layer/blob/master/docs/index.md\"\u003e文档\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e下载\u003ca href=\"https://www.foundationdb.org/download/\"\u003e链接\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGithub\u003ca href=\"https://github.com/foundationdb/fdb-record-layer/\"\u003e项目\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e查看英文原文:\u003ca href=\"https://www.infoq.com/news/2019/02/foundationdb-record-layer\"\u003eFoundationDB’s Record Layer Supports Relational Database Semantics, Schema Management and Indexing\u003c/a\u003e\u003c/p\u003e\n