PHP Client for TigerGraph

Is there PHP Client for TigerGraph?

@DuskoV There is no PHP connector built yet. Here is a list of current connectors https://tigergraph-oss.github.io/tg-ecosys-docs/awesome/#connectors

So, at this point it’s safe to say ArangoDB is significantly beating TigerGraph :slight_smile:

Haha - Well TigerGraph’s community and ecosystem are very young compared to some of the other more established communities. However, TigerGraph’s ecosystem of tools is expanding as well as the product itself with new features and functionalities.

One neat aspect of TigerGraph is every Query your write natively gets compiled into a REST endpoint making communicating with the database fairly easy.

Here is a screenshot of some of the built-in endpoints along with some of the custom endpoints I’ve created. The nice thing about Postman is you can create snippets in many languages.

Example of PHP call

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://dash-app.i.tgcloud.io:9000/query/MyGraph/C_User_All_Transactions?userid=0",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer a1728l7d9nqhqdb6vlc8occ6pf4ei7oq"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

If you wanted to take this a step further you could export all the endpoints you have generated into an OpenAPI format and use Swaggers codegen tool to compile a custom client connector in the language of your choice.

Yes, there are different paradigms for sure. I would be happy to discuss pros/cons with ArangoDB, but don’t think it’s appropriate in this community. We’ve been using it for few years. There are some big upsides to it. As an example, AQL is so straight forward when you think about graph data, compared to GSQL (OrientDB went in the similar direction). Feel free to drop me a priv msg if you are interested about experiences.

Based on your own benchmarks, TigerDirect has a potential, but as you mentioned, it’s still evolving (no maturity). I will (personally) wait for PHP client, and then run some comparisons. We are heavy hitters as far as transactions/sec , will be interesting to observe. Thx!

@Jon_Herke By the way, TigerGraph is not schema-free, correct? It requires data schema?

Correct - You need to define the schema.

@DuskoV
If someone (for example you) could put together the framework for a PHP connector (including packaging/distribution, and one example of REST request), I would be happy to provide the rest (no pun intended). Acknowledging that there are most certainly conceptual differences amongst languages, I believe it would be not too complicated to port the logic from the Python connector. I would definitely give it a try.

1 Like

@SzilardTG , let me see if I find some time. If I go with it, it would be very primitive, similar to what’s already there.

Arango’s driver is nicely sophisticated. For example, it has cluster failover logic and nice deserialization of JSON HTTP response into PHP objects, etc.

Will let you know if any movements on this. Just to mention, so far the schema-free has been one of main features that helped us to quickly grow our internal product (fyi)…

1 Like

@DuskoV
It’s not a problem if at the start it’s primitive; let’s just get started and then it will grow.

For example, the pyTigerGraph module has initially just returned the JSON response, then that was deserialised into Python dictionaries, lists and tuples; then those were refined and transformed to make it easier to work with them, and now the most relevant functions can immediately return Pandas DataFrames so that data scientists can start massaging the data immediately in their Jupyter notebook. Or there is an extension that converts a query output into a structure that can be directly fed into a graph visualisation gadget (that is rendered by Cytoscape.js).

Some stuff, like cluster failover logic either do not apply or we can add it later.

“A journey of a thousand miles begins with a single step”

We don’n need to reinvent the wheel, there are tons of REST PHP clients publicly available, i.e. https://github.com/sendgrid/php-http-client

Being open source product it’s much easier to setup the community which is contributing to the product.

The main difference between ArangoDB and TigerGraph is - GSQL is turing complete language and AQL is not. If you need a graph database and you just need to retrieve and modify the data, ArangoDB is a perfect product. If you want to do something more advanced and challenging with your graph data you should look around.

1 Like

I’m going to disregard the last post. @Bruno if that’s the case, why don’t you clone that repo and proclaim it to be TigerGraph PHP client.

If GSQL is the only thing you know, you should keep it to your self, and better evaluate competing products.

Hi @DuskoV,

There is no use being rude, condescending or sarcastic.

As soon as there will be serious demand for a PHP client, we will definitely develop it (and probably before that), but currently the interest from data scientists and analysts (who really appreciate the analytical and ML/DL/AI capabilities, deep link/multi-hop skills and extreme performance of TigerGraph) is a lot more serious than from web developers and thus we focus on Python connectivity right now. We also work on a JavaScript connector for client-side visualisation purposes (primarily, although we will expand it to server-side/Node.js too). Once these are sufficiently mature, we will consider PHP, although when I polled people at the end of our Graph Gurus 42 session about what connectors they would like to see the most, nobody voted on PHP.

Have a good day,

Szilard :tiger2: