Aracılığıyla paylaş


PostgreSQL için Azure Veritabanı ile AGE uzantısı

Apache AGE (grafik uzantısı), grafik veritabanı işlevlerini PostgreSQL ekosistemine sorunsuzca tümleştirmek için tasarlanmış güçlü bir PostgreSQL uzantısıdır. AGE, kullanıcıların Apache Incubator projesi altında geliştirildiğinde sezgisel openCypher sorgu dilini destekleyerek graf verilerini verimli ve açık bir şekilde depolamasına ve sorgulamasına olanak tanır. İlişkisel ve grafik verileri arasındaki boşluğu kapatarak geliştiricilerin karmaşık ilişkileri yönetmesine ve geleneksel veritabanlarının ortaya çıkarmakta zorlanabileceği içgörüleri ortaya çıkarmasına olanak sağlar.

Düğümler (varlıklar) ve kenarlar (ilişkiler) aracılığıyla temsil edilen graf verileri, sosyal ağlar, öneri sistemleri, sahtekarlık algılama, ağ analizi ve bilgi grafikleri gibi uygulamalar için giderek daha önemli olarak kabul edilir. Apache AGE, bu tür birbirine bağlı verileri işlemek için güçlü bir çözüm sağlar ve gelişmiş analizlere ve kolaylaştırılmış veri yönetimine olanak tanır.

Apache AGE ile grafik veri özelliklerinin kilidini açma

Apache AGE ile grafik veri özelliklerinin kilidinin açılması, geliştiricilerin PostgreSQL'de birbirine bağlı verilerin tüm potansiyelinden yararlanmasına olanak sağlar. Apache AGE, grafik veritabanı işlevselliğini doğrudan ilişkisel veritabanıyla tümleştirerek karmaşık ilişkilerin sorunsuz bir şekilde incelenmesine ve analiz edilmesine olanak tanır. Bu özellik sosyal ağlar, sahtekarlık algılama ve öneri sistemleri gibi veri bağlantıları hakkında derin içgörüler gerektiren uygulamalar için değerlidir. OpenCypher sorgu dili ve güçlü PostgreSQL temeli desteğiyle Apache AGE, grafik verilerini yönetmek ve sorgulamak için ölçeklenebilir ve verimli bir çözüm sağlar.

Apache AGE'nin temel özellikleri

  • Graf ve İlişkisel Veri Tümleştirmesi: AGE, PostgreSQL içindeki graf ve ilişkisel veriler arasında sorunsuz etkileşime olanak tanır.
  • openCypher Sorgu Dili: AGE, graf veritabanları için bu yaygın olarak tanınan sorgu dilini destekleyerek sorgu yazmayı ve bakımı basitleştirir.
  • Ölçeklenebilirlik ve Güvenilirlik: PostgreSQL'in kanıtlanmış mimarisi kapsamında AGE, ölçeklenebilirliğini ve kurumsal düzeyde sağlamlığını devralır.

Grafik veritabanını neden kullanmalısınız?

Graph veritabanları karmaşık ve yüksek oranda birbirine bağlı ilişkileri temsil etme ve sorgulama konusunda üstünlük sağlar. Derin ilişki geçişi için en iyi duruma getirilmemiş birden çok birleştirme veya belge veritabanı gerektiren ilişkisel veritabanlarının aksine, grafik veritabanları varlıklar arasındaki ilişkileri doğal olarak modeller. Örneğin, grafik veritabanında "arkadaş arkadaşları" veya "iki nokta arasındaki en kısa yol" sorgulanması daha sezgisel ve verimlidir.

AGE, PostgreSQL'in ACID uyumlu işlem sistemini kullanarak grafik sorguları için güvenilirlik ve bölünmezlik sağlar. Bu tümleştirme, olguları ve kavramları düğüm, bağlantılarını ise kenar olarak yapılandırarak yapay zeka temelli arama ve veri oluşturmayı destekleyen Bilgi Grafikleri gibi gelişmiş uygulamaları kolaylaştırır.

Azure müşterileri AGE uzantısını etkinleştirebilir

PostgreSQL için Azure Veritabanı, uzantı olarak Apache AGE içerir.

Bu adımlar, esnek sunucu örneğinizde uzantıyı etkinleştirmenize yardımcı olur:

Access sunucusu parametreleri

Azure portalında PostgreSQL esnek sunucu örneğine gidin ve Sunucu Parametreleri seçeneğini belirleyin.

Aşağıdaki ayarları yapın:

  • azure.extensions: Parametre filtresindeki kullanılabilir uzantılar arasında AGE araması yapın ve etkinleştirin.
  • shared_preload_libraries: Parametre filtresinde AGE'yi arayın ve etkinleştirin.

Bu değişiklikleri uygulamak için Kaydet'i seçin. AGE uzantısını etkinleştirmek için sunucu otomatik olarak yeniden başlatılır.

Uyarı

shared_preload_libraries etkinleştirilmezse, bir sorguda AGE şemasını kullanmayı denediğinizde aşağıdaki hatayla karşılaşılır: "HATA: ilk şifreleme sorgusunda işlenmeyen cipher(cstring) işlev çağrısı hatası"

PostgreSQL'de AGE'yi etkinleştirme

Sunucu yeniden başlatıldıktan sonra psql yorumlayıcısını kullanarak PostgreSQL örneğine bağlanın. AGE'yi etkinleştirmek için aşağıdaki komutu yürütün:

CREATE EXTENSION IF NOT EXISTS AGE CASCADE;

Başarılı olduktan sonra sorgu çıktısı olarak görürsünüz CREATE EXTENSION .

AGE'nin etkinleştirildiğini onaylamak ve uzantının sürümünü denetlemek için pg_extension katalog tablosunu da sorgulayabilirsiniz.

SELECT * FROM pg_extension WHERE extname = 'age';

Şema yollarını yapılandırma

AGE, grafik verilerini işlemek için gerekli adlı ag_catalogbir şema ekler. Aşağıdakini yürüterek bu şemanın arama yoluna dahil olduğundan emin olun:

SET search_path=ag_catalog,"$user",public;

Python için aşağıdakini yürüterek şema yolunu ayarlayabilirsiniz:

import psycopg as pg
with pg.Connection.connect(con_str + " options='-c search_path=ag_catalog,\"$user\",public'") as con:

Uygulamanızda program aracılığıyla da yapılandırılabilir.

Bu adımları izleyerek PostgreSQL örneğinizin AGE uzantısının özelliklerini kullanacak şekilde düzgün yapılandırıldığından emin olursunuz. AGE uzantısı doğrudan PostgreSQL içinde gelişmiş grafik veritabanı özellikleri sağlar. Bu kurulum, graf sorgularının uygulamalarınızla sorunsuz bir şekilde tümleştirilmesine olanak tanır ve güçlü veri ilişkilerinin ve içgörülerin kilidini açar. AGE uzantısı etkinleştirilip yapılandırıldığında artık PostgreSQL ortamınızdaki grafik analizinin tüm potansiyelini keşfetmeye hazırsınız.

ag_catalog şemasındaki önemli tablolar

  • ag_graph
  • ag_label

ag_graph

Apache AGE'nin ag_catalog şemasındaki ag_graph tablosu, işlevi aracılığıyla ag_catalog.create_graph PostgreSQL içinde oluşturulan grafiklerle ilgili meta veriler için bir depo görevi görür. Özellikle grafın adı ve PostgreSQL'de şema işlevi gören ilişkili ad alanı gibi ayrıntıları korur. Bu ad alanı grafiğin yapısını düzenler ve köşe ve kenar verilerini depolamak için tablolar içerir.

\d+ ag_graph
                                          Table "ag_catalog.ag_graph"
 Column   |     Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
-----------+--------------+-----------+----------+---------+---------+-------------+--------------+-------------
 graphid   | oid |           | not null |         | plain   |             |              |
 name | name |           | not null |         | plain   |             |              |
 namespace | regnamespace |           | not null |         | plain   |             |              |
Indexes:
    "ag_graph_graphid_index" UNIQUE, btree (graphid)
    "ag_graph_name_index" UNIQUE, btree (name)
    "ag_graph_namespace_index" UNIQUE, btree (namespace)
Referenced by:
    TABLE "ag_label" CONSTRAINT "fk_graph_oid" FOREIGN KEY (graph) REFERENCES ag_graph(graphid)
Access method: heap

ag_label

ag_label tablosu AGE grafiklerinde kullanılan etiketlerle ilgili meta verileri depolar. Bu etiketleri takip ederek ilgili graflarıyla ilişkilendirir ve köşeleri mi yoksa kenarları mı temsil ettiklerini tanımlar. Giriş etiketin benzersiz kimliğini, ilişkili grafiği, tüm dizinleri ve verileri depolayan temel PostgreSQL tablosunu içerir.

\d+ ag_label
                                   Table "ag_catalog.ag_label"
 Column  |    Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
----------+------------+-----------+----------+---------+---------+-------------+--------------+-------------
 name | name |           | not null |         | plain   |             |              |
 graph    | oid |           | not null |         | plain   |             |              |
 id       | label_id   |           |          |         | plain   |             |              |
 kind     | label_kind |           |          |         | plain   |             |              |
 relation | regclass   |           | not null |         | plain   |             |              |
 seq_name | name |           | not null |         | plain   |             |              |
Indexes:
"ag_label_graph_oid_index" UNIQUE, btree (graph, id)
"ag_label_name_graph_index" UNIQUE, btree (name, graph)
"ag_label_relation_index" UNIQUE, btree (relation)
"ag_label_seq_name_graph_index" UNIQUE, btree (seq_name, graph)
Foreign-key constraints:
- `fk_graph_oid` FOREIGN KEY (graph) REFERENCES ag_graph(graphid)
Access method: heap