neo4j擅長管理高度互連的數據,非常適合涉及業務,社交,知識,興趣和媒體圖的應用程序。 這篇文章探索了Neo4J並證明了其與PHP的使用。隨後的帖子將詳細介紹構建Silex驅動的圖形應用程序。
>>圖數據庫對於處理複雜關係的公司至關重要。 圖模型的靈活性和圖形數據庫的有效存儲和檢索使它們成為強大的解決方案。 Neo4J具有驗證的處理大規模互連數據集的能力使其成為首選。 在增強客戶體驗和促進複雜地圖編輯等應用中,其價值很明顯。
快速介紹圖數據庫和neo4j>
一個圖由>節點(實體)組成。 在屬性圖模型中,節點和關係被標記並具有屬性。
通過Wikipedia 圖像
考慮用戶互相關注的社交應用程序。 用戶被表示為帶有標籤和屬性的節點。 >
與類型和屬性相關的關係,定義了節點之間的連接,在數據中添加了語義含義。
Neo4J使用Cypher,這是一種強調可讀性和表現力的聲明性查詢語言。 Cypher專注於要檢索的內容,而不是如何檢索。 關鍵子句包括:
:過濾結果。 :指定輸出格式。 >
:創建節點和關係。 > neo4j和php圖數據庫優化了連接數據的操作。 節點和關係的專用存儲結構確保高性能,消除了在查詢執行期間對加入操作的需求。
此數據的視覺表示自然地將自己借給圖數據庫。
cypher:neo4j的查詢語言
MATCH
>
WHERE
)和箭頭(例如
<code class="language-cypher">MATCH (user:User {name:'Hannah Hilpert'})-[r:FOLLOWS]->(follower)
RETURN user, follower</code>
Neoxygen提供與Neo4J相互作用的開源PHP組件。 為neo4j http api提供了強大的客戶端。
NeoClient
依賴性添加到您的>:>
配置連接:neoclient
composer.json
<code class="language-json">{ "require": { "neoxygen/neoclient":"~2.1" } }</code>
啟用自動響應格式:
<code class="language-php">use Neoxygen\NeoClient\ClientBuilder; $client = ClientBuilder::create() ->addConnection('default', 'http', 'localhost', 7474) ->build();</code>
<code class="language-php"><?php use Neoxygen\NeoClient\ClientBuilder; $connUrl = parse_url('http://master.sb02.stations.graphenedb.com:24789/db/data/'); $user = 'master'; $pwd = 's3cr3tP@ssw0rd'; $client = ClientBuilder::create() ->addConnection('default', $connUrl['scheme'], $connUrl['host'], $connUrl['port'], true, $user, $password) ->build();</code>構建示例應用程序
<code class="language-php">$client = ClientBuilder::create() ->addConnection('default', 'http', 'localhost', 7474) ->setAutoFormatResponse(true) ->build();</code>>讓我們創建用戶和
>關係。 aQUERY:
FOLLOWS
CREATE
<code class="language-cypher">CREATE (user:User {name:'Kenneth'}) RETURN user</code>
創建一個關係:
<code class="language-php">$query = 'CREATE (user:User {name:"Kenneth"}) RETURN user'; $result = $client->sendCypherQuery($query)->getResult(); $user = $result->getSingleNode(); $name = $user->getProperty('name');</code>
使用GraphGen創建多個用戶,關係簡化了過程。 將生成的圖導入您的數據庫。
<code class="language-php">$query = 'MATCH (user1:User {name:{name1}}), (user2:User {name:{name2}}) CREATE (user1)-[:FOLLOWS]->(user2)'; $params = ['name1' => 'Kenneth', 'name2' => 'Maxime']; $client->sendCypherQuery($query, $params);</code>
>友誼建議的密碼查詢:
<code class="language-cypher">MATCH (user:User {firstname: {firstname}})-[:FOLLOWS]->(followed)-[:FOLLOWS]->(suggestion) WHERE user <> suggestion AND NOT (user)-[:FOLLOWS]->(suggestion) RETURN user, suggestion, count(*) as occurrence ORDER BY occurrence DESC LIMIT 10</code>結論
以上是發現使用Neo4J和PHP的圖形數據庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!