the-don-himself/gremlin-ogm

适用于 Tinkerpop 3+ 兼容的图数据库(JanusGraph、Neo4j 等)的 PHP 对象图映射器,允许您持久化数据和运行 Gremlin 查询。

v0.5.1 2020-06-30 10:01 UTC

This package is auto-updated.

Last update: 2024-09-29 05:09:12 UTC


README

适用于 Tinkerpop 3+ 兼容的图数据库(JanusGraph、Neo4j 等)的 PHP 对象图映射器,允许您持久化数据和运行 Gremlin 查询。

查看 TwitterGraph 文件夹,了解如何使用 gremlin-ogm 在图数据库中详尽地表示 Twitter 的示例。

用法

配置图连接。这只是一个代理到底层 gremlin-server 客户端(php)的代理,即 brightzone/gremlin-php,因此您可以检查连接类以获取配置默认值和选项 Brightzone\GremlinDriver\Connection。对于测试和开发,我建议如下

$options = [
    'host' => '127.0.0.1', 
    'port' => 8182, 
    'username' => null, 
    'password' => null, 
    'ssl' => [
      'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false
      ]
    ],
    'graph' => 'graph', 
    'timeout' => 10, 
    'emptySet' => true,
    'retryAttempts' => 3
];

配置选项后,启动图连接

use TheDonHimself\GremlinOGM\GraphConnection;

....

$graph = (new GraphConnection($options))->init();
$graph_connection = $graph->getConnection();

此时,您可以打开到图数据库的连接,并发送 Gremlin 查询,如下所示。

// Open Connection
$graph_connection->open();

// Query Number of Vertices in Graph
$resultSet = $graph_connection->send('g.V().count()');

// Close Connection
$graph_connection->close();

这些只是底层 brightzone/gremlin-php 库的代理,那么 gremlin-ogm 做什么呢?Gremlin-OGM 帮助您将 PHP 对象映射到图顶点、边、属性和索引。它还提供了一种验证映射的方法,并指出模式失败的区域。此外,该库尝试创建一个跨供应商的抽象层,因为不同的供应商可能提供不同的执行 Gremlin 命令的方法。

当前已测试和支持的供应商

  • Amazon Neptune
  • Azure Cosmos DB
  • Datastax Enterprise Graph
  • Compose 上的 JanusGraph
  • 自托管 JanusGraph
  • Neo4j
  • OrientDB

要告知库特定的供应商,如自托管所示扩展选项数组

$options = [
....
    'vendor' => [ 
      'name' => '_self', 
      'database' => 'janusgraph', 
      'version' => '0.3.1'
    ],
....
];

省略版本将使库假设最新版本。

JanusGraph on Compose 的示例配置如下。

$options = [
....
    'vendor' => [ 
      'name' => 'compose', 
      'graph' => 'twitter',
      'database' => 'janusgraph', 
      'version' => '0.3.1'
    ],
....
];

Azure 上的 CosmosDB 的示例配置如下。

$options = [
....
    'vendor' => [ 
      'name' => 'azure', 
      'database' => 'cosmosdb'
    ],
....
];

供应商信息对库至关重要,以便知道是否启用某些功能,如默认启用的 绑定,这可能在所有情况下都不适用。现在可以在图形对象下作为数组获取提交的供应商信息

$vendor = $graph->getVendor();

示例用法

请查看 The-Don-Himself/twitter-graph,了解如何使用此库将您的 Twitter 连接和推文映射到兼容的图数据库的完整示例代码。

GraphQL

您可能还感兴趣于 The-Don-Himself/graphql2gremlin,这是一个将 GraphQL 查询转换为 Gremlin 遍历的标准尝试。