the-don-himself / gremlin-ogm
适用于 Tinkerpop 3+ 兼容的图数据库(JanusGraph、Neo4j 等)的 PHP 对象图映射器,允许您持久化数据和运行 Gremlin 查询。
Requires
- php: ^7.2
- brightzone/gremlin-php: ^3.0
- doctrine/annotations: ^1.8
- jms/serializer: ^3.0 || ^2.0
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 遍历的标准尝试。