5 个版本

使用旧的Rust 2015

0.1.4 2017年10月31日
0.1.3 2017年9月27日
0.1.2 2017年8月30日
0.1.1 2017年8月26日
0.1.0 2017年7月30日

#1923数据库接口


用于 philec

BSD-2-Clause-FreeBSD

210KB
4K 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等)和编程语言将是一件好事,并且正在计划中。

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

依赖

~4MB
~80K SLoC