2 个版本

使用旧Rust 2015

0.1.4 2017年10月31日
0.1.3 2017年9月27日

数据库接口 中排名第 2159

BSD-2-Clause-FreeBSD

230KB
4.5K SLoC

PHiLe

无痛苦的高级持久化引擎

PHiLe on Travis CI PHiLe on crates.io PHiLe on docs.rs PHiLe Download PHiLe License Test Coverage Gitter chat Lines of Code Twitter

什么是PHiLe?

PHiLe(发音为fillet),即无痛苦的高级持久化引擎,是一个下一代数据库管理工具和领域特定语言。它允许应用开发者编写基本上是概念或实体关系模型的文本形式,然后自动生成数据库抽象层。

与传统ORM不同,它有一个强大、表达性强的类型系统。它允许程序员处理许多种类的值,而不仅仅是对象,因此可以轻易消除与ORM解决方案常见的一些瓶颈,例如必须检索对象的传递闭包,但最终只丢弃其标量属性中的少数几个。

PHiLe还支持广泛的不同语言和数据库,因此它与许多现有技术栈配合良好。它包括用于在具有相同概念模式的数据库引擎之间自动迁移数据的工具,以及另一个DSL用于重构模式而不会丢失数据或类型安全。

我可以在哪里下载它?

  • PHiLe位于crates.io。您可以通过以下命令安装编译器:

    cargo install philec
    

    如果您想以编程方式使用libphile库,请将以下内容添加到您的Cargo.toml中:

    [dependencies]
    phile = "0.1.4"
    
  • 您可以使用以下命令从项目的官方GitHub页面克隆源代码

    git clone git://github.com/H2CO3/PHiLe.git
    

它有文档吗?

当然!根据您打算如何使用PHiLe,您可能需要以下内容:

  • 教程。这可以帮助您快速轻松地使用PHiLe的领域特定语言编写模式和查询。
  • 示例。如果您通过示例学习,请查看这些代码片段。
  • 参考。如果您已经熟悉基础知识,现在正在寻找特定功能的详细信息,请搜索此文档。
  • phile库的API文档,如果您想将PHiLe嵌入到自己的Rust程序中时很有用。
  • philec的Manpage样式文档,如果您想深入了解PHiLe CLI编译器的调用。

它是如何工作的?

PHiLe设计的理念在我的博客上进行了详细解释。

PHiLe DSL 是一种静态类型、面向对象、函数式声明性语言,能够描述模式(如DDL)和查询/更新(如DML)。它将程序员熟悉的内存模型带到持久存储的世界:关系表变成类或结构体,记录和文档变成对象,关系变成数组和指针。

正如现代函数式语言所期望的那样,PHiLe DSL 支持高级且方便的特性,如高阶函数、模式匹配和代数数据类型(包括类、结构体、元组、枚举和可选类型)。特别是枚举,是字符串类型字段的类型安全替代品,而适当的可选类型可以防止与 NULL 值相关的错误。

PHiLe 将支持以下数据库类型和编程语言

数据库引擎
  • SQLite3
  • MySQL / MariaDB
  • MongoDB
编程语言
  • Rust
  • C
  • C++
  • Objective-C
  • Swift
  • Go
  • JavaScript
  • Python
  • Ruby
  • Java
  • C#
  • Haskell

支持其他流行的存储引擎(例如Postgres、MS/SQL、Redis等)和编程语言将是一个很好的选择,并计划实现。

我想对你大喊,因为这太糟糕了!

依赖项

~4.5MB
~86K SLoC