我刚刚开始使用图形数据库。我想在PHP应用程序中与他们交谈。特别是,我正在考虑OrientDB,主要是因为它的许可优势和neo4j的功能。
在PHP中与OrientDB交互的推荐方法是什么?对于PHP世界,是否存在像tinkerpop这样的通用框架?
我想主要使用gremlin和一些OrientDB的扩展SQL来查询我的图形(仅在必要时)。
我知道有2个php连接器:Orient和OrientDB-PHP,但还没有尝试过。有人有过这方面的经历吗?优缺点都有什么?如果它存在的话,我当然会更喜欢像tinkerpop这样的东西,但是如果它不是一个面向OrientDB的库也可以。
答案 0 :(得分:3)
我是Alex,我实际上为Orient(php库)编写了代码库的最大部分。
在PHP中,目前没有像tinkerpop这样的东西,但我认为你应该能够与东方开始。使用它非常简单:
<?php
namespace Congow\Orient;
use Congow\Orient\Binding\HttpBinding;
use Congow\Orient\Binding\BindingParameters;
require __DIR__.'/../autoload.php';
$parameters = BindingParameters::create('http://admin:admin@127.0.0.1:2480/friends');
$binding = new HttpBinding($parameters);
$response = $binding->query('select from friends where any() traverse(0,1) ( @rid = #5:3 ) and @rid <> #5:3');
$friends = $response->getResult();
foreach ($friends as $friend) {
echo $friend->name, "\n";
}
您也可以使用查询构建器,而不是从头开始编写查询:
$query = new Select(array('myClass'));
$query->orderBy("name ASC", false);
echo $query->getRaw() // SELECT FROM myClass ORDER BY name ASC
您可以查看库的测试,或示例目录中的迷你样本。
我们正在慢慢继续开发,所以你可以在这里找到一些资源:http://odino.org/blog/categories/orientdb/
干杯,
答案 1 :(得分:1)
我知道已经有一段时间但是我想指出你可以通过可用的驱动程序在PHP中使用Tinkerpop堆栈。
这些将允许您对所选的底层数据库进行一定程度的抽象 - 从而允许您在需要时切换DB(Neo4j,OrientDB,Titan等)。
您可以通过可用的php驱动程序使用Gremlin server(rexster的新名称):
您可以通过可用的PHP驱动程序使用堆栈中的Rexster server: