earthit/storage

2.0.1 2024-01-05 18:08 UTC

README

Build Status

PHP 存储库

数据访问层。

目标

  • 从 EarthIT_Schema 对象中提取模式信息。

  • 提供对数据库或数据库的读取和存储的一致 API。

  • 传入和传出的对象都采用 '模式形式';将对象转换为数据库形式由存储层完成。

  • 允许自定义存储层进行额外的转换。

设计原则

  • 明确指出对象使用的表示形式,而不是依赖它们之间的偶然相似性。

    • 例如,一个接受对象的函数应在其文档中指明该对象应采用哪种形式。
  • 数据与管道分离。数据对象只是数组(或,可能,标量值。但通常是数组)。

  • 后端无关。可能是 RDB。也可能是其他完全不同的东西。

  • 允许高效地访问相同类型对象的集合。

    • 函数通常应编写为操作集合,以分摊开销成本。
  • 应能够独立使用查询生成和对象转换实用程序。

  • 目前不处理多表连接。通过查询 ID 集合在 PHP 中执行连接更容易,尤其是当链接跨越数据库边界时。

对象表示形式

  • 数据库内部形式:存储在数据库中的实际位。我们的 PHP 代码永远不会看到这些。

  • 数据库外部形式

    数据库中的值,经过最小转换以使其在 PHP 中可表示。例如。

    • BIGINT 表示为字符串
    • GEOMETRY 值表示为 GeoJSON 字符串

    键与列名完全对应。

  • 模式形式:在 schema.txt 中描述的形式。

    JSON 字段被解码

    键是 '普通英语' 字段名称。

  • JSO 形式

    JSON REST 服务的标准形式。值通常与模式形式中的值相同,但键将使用 '骆驼峰命名法' 而不是 '普通英语'。

    • "JSO" 不是拼写错误。此形式的对象是未进行 JSON 编码的 JSON 编码对象,因此没有 'N'。
    • 为具有复合键的对象添加 'id' 字段。
    • 将此形式转换为/从该形式超出了此库的范围。