Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri
Microsoft Fabric'teAzure SQL Veritabanı
Azure SQL Yönetilen Örneği
SQL veritabanı
SQL Graph mimarisi hakkında bilgi edinin. Temel bilgileri bilmek, diğer SQL Graph makalelerini anlamayı kolaylaştırır.
SQL Graph veritabanı
Kullanıcılar veritabanı başına bir grafik oluşturabilir. Grafik, düğüm ve kenar tablolarından oluşan bir koleksiyondur. Düğüm veya kenar tabloları veritabanındaki herhangi bir şema altında oluşturulabilir, ancak bunların tümü tek bir mantıksal grafiğe aittir. Düğüm tablosu benzer düğüm türlerinden oluşan bir koleksiyondur. Örneğin, bir Person düğüm tablosu bir grafiğe ait tüm Person düğümleri tutar. Benzer şekilde, kenar tablosu da benzer türde kenarlardan oluşan bir koleksiyondur. Örneğin, bir kenar tablosu başka bir FriendsPerson öğesine Personbağlanan tüm kenarları barındırır. Düğümler ve kenarlar tablolarda depolandığından, normal tablolarda desteklenen işlemlerin çoğu düğüm veya kenar tablolarında desteklenir.
Aşağıdaki diyagramda SQL Graph veritabanı mimarisi gösterilmektedir.
Düğüm tablosu
Düğüm tablosu, grafik şemasındaki bir varlığı temsil eder. Kullanıcı tanımlı sütunlarla birlikte her düğüm tablosu oluşturulduğunda, veritabanında belirli bir düğümü benzersiz olarak tanımlayan örtük $node_id bir sütun oluşturulur. içindeki $node_id değerler otomatik olarak oluşturulur ve bu düğüm tablosunun grafik tablosu için nesne kimliğinin ve dahili olarak oluşturulan bigint değerinin bir bileşimidir. Ancak sütun $node_id seçildiğinde JSON dizesi biçiminde hesaplanan bir değer görüntülenir. Ayrıca, $node_id benzersiz bir soneki olan bir iç ada eşleyen sahte bir sütundur. Tablodan $node_id sahte sütunu seçtiğinizde, sütun adı olarak $node_id_<unique suffix>görünür.
Note
İç sütunu sorgulamanın $node_id desteklenen ve önerilen tek yolu, sorgularda sahte sütunları kullanmaktır. Sütunları hiçbir sorguda doğrudan kullanmamalısınız $node_id_<hex_string> .
Ayrıca, sahte sütunlarda gösterilen hesaplanan JSON gösterimi bir uygulama ayrıntısıdır. Bu JSON gösteriminin biçimine doğrudan bağımlılık almamalısınız. Bu JSON gösterimiyle ilgilenmeniz gerekiyorsa, lütfen NODE_ID_FROM_PARTS() ve diğer ilgili Sistem İşlevleri'ni kullanmayı göz önünde bulundurun.
Koşullarda doğrudan graf sahte sütunlarının ($node_id, $from_id, $to_id) kullanılması önerilmez. Örneğin, gibi n.$node_id = e.$from_id bir koşuldan kaçınılmalıdır. JSON gösterimine dönüştürme nedeniyle bu tür karşılaştırmalar verimsiz olma eğilimindedir. Bunun yerine, KAÇINCI işlevini mümkün olduğunca kullanın.
Kullanıcıların düğüm tablosu oluşturulurken sütunda $node_id benzersiz bir kısıtlama veya dizin oluşturması önerilir, ancak oluşturulmazsa, varsayılan benzersiz, kümelenmemiş dizin otomatik olarak oluşturulur. Ancak, bir grafik sahte sütunundaki tüm dizinler, temel alınan iç sütunlarda oluşturulur. Diğer bir ifadeyle, sütunda $node_id oluşturulan bir dizin iç graph_id_<hex_string> sütunda görünür.
Kenar tablosu
Kenar tablosu grafikteki bir ilişkiyi temsil eder. Kenarlar her zaman yönlendirilir ve iki düğümü bağlar. Kenar tablosu, kullanıcıların grafikte çoka çok ilişkileri modellemesini sağlar. Kullanıcı tanımlı sütunlar ("öznitelikler") bir kenar tablosunda isteğe bağlıdır. Bir kenar tablosu her oluşturulduğunda, kullanıcı tanımlı sütunlarla birlikte kenar tablosunda üç örtük sütun oluşturulur:
| Sütun adı | Description |
|---|---|
$edge_id |
Veritabanında belirli bir kenarı benzersiz olarak tanımlar. Oluşturulan bir sütundur ve değer, kenar tablosunun object_id ve dahili olarak oluşturulan bigint değerinin birleşimidir. Ancak sütun $edge_id seçildiğinde JSON dizesi biçiminde hesaplanan bir değer görüntülenir.
$edge_id , benzersiz bir soneki olan bir iç ada eşleyen sahte bir sütundur. Tablodan seçim $edge_id yaptığınızda sütun adı olarak $edge_id_<unique suffix>görünür. Sorgularda sahte sütun adları kullanmak, iç sütunu sorgulamanın ve iç $edge_id adı onaltılık dizeyle kullanmanın önerilen yoludur. |
$from_id |
$node_id Kenarın kaynağı olan düğümü depolar. |
$to_id |
$node_id Kenarın sonlandırıldığı düğümün depolar. |
Belirli bir kenarın bağlanabileceği düğümler ve $from_id sütunlarına eklenen $to_id veriler tarafından denetlenebilir. İlk sürümde, iki tür düğüme bağlanmasını kısıtlamak için kenar tablosunda kısıtlamalar tanımlamak mümkün değildir. Başka bir ifadeyle, bir kenar grafikteki iki düğümü türlerine bakılmaksızın bağlayabilir.
Sütuna $node_id benzer şekilde, kullanıcıların kenar tablosunun oluşturulduğu sırada sütunda $edge_id benzersiz bir dizin veya kısıtlama oluşturması önerilir, ancak oluşturulmazsa, bu sütunda otomatik olarak bir varsayılan benzersiz, kümelenmemiş dizin oluşturulur. Ancak, bir grafik sahte sütunundaki tüm dizinler, temel alınan iç sütunlarda oluşturulur. Diğer bir ifadeyle, sütunda $edge_id oluşturulan bir dizin iç graph_id_<unique suffix> sütunda görünür. Ayrıca OLTP senaryolarında kullanıcıların uç yönünde daha hızlı aramalar için ($from_id, $to_id) sütunlarında dizin oluşturması da önerilir.
Aşağıdaki diyagramda düğüm ve kenar tablolarının veritabanında nasıl depolandığı gösterilmektedir.
Metadata
Bir düğümün veya kenar tablosunun özniteliklerini görmek için bu meta veri görünümlerini kullanın.
sys.tables
bit dosyasındaki aşağıdaki sütunlar grafik tablolarını tanımlamak için kullanılabilir. 1 olarak ayarlanırsa is_node , tablo bir düğüm tablosudur ve 1 olarak ayarlanırsa is_edge tablo bir kenar tablosudur.
| Sütun Adı | Veri Türü | Description |
|---|---|---|
| is_node | bit | Düğüm tabloları is_node için 1 olarak ayarlanır. |
| is_edge | bit | Kenar tabloları is_edge için 1 olarak ayarlanır. |
sys.columns
Görünümdeki graph_typegraph_type_desc ve sys.columns sütunları, grafik düğümünde ve kenar tablolarında kullanılan farklı sütun türlerini anlamak için kullanışlıdır:
| Sütun Adı | Veri Türü | Description |
|---|---|---|
| graph_type | int | Değer kümesi içeren iç sütun. Değerler, grafik sütunları ve NULL diğerleri için 1-8 arasındadır. |
| graph_type_desc | nvarchar(60) | Değer kümesi içeren iç sütun. |
Aşağıdaki tabloda sütun için graph_type geçerli değerler listelenir:
| Sütun Değeri | Description |
|---|---|
| 1 | GRAPH_ID |
| 2 | GRAPH_ID_COMPUTED |
| 3 | GRAPH_FROM_ID |
| 4 | GRAPH_FROM_OBJ_ID |
| 5 | GRAPH_FROM_ID_COMPUTED |
| 6 | GRAPH_TO_ID |
| 7 | GRAPH_TO_OBJ_ID |
| 8 | GRAPH_TO_ID_COMPUTED |
sys.columns ayrıca düğüm veya kenar tablolarında oluşturulan örtük sütunlar hakkındaki bilgileri de depolar. Sys.columns dosyasından aşağıdaki bilgiler alınabilir ancak kullanıcılar bu sütunları bir düğümden veya kenar tablosundan seçemez.
Düğüm tablosundaki örtük sütunlar şunlardır:
| Sütun Adı | Veri Türü | is_hidden | Comment |
|---|---|---|---|
graph_id_\<hex_string> |
BIGINT | 1 | İç graf kimliği değeri. |
$node_id_\<hex_string> |
NVARCHAR | 0 | Düğüm kimliğinin dış karakter gösterimi. |
Kenar tablosundaki örtük sütunlar şunlardır:
| Sütun Adı | Veri Türü | is_hidden | Comment |
|---|---|---|---|
graph_id_\<hex_string> |
BIGINT | 1 | İç graf kimliği değeri. |
$edge_id_\<hex_string> |
NVARCHAR | 0 | Kenar kimliğinin karakter gösterimi. |
from_obj_id_\<hex_string> |
INT | 1 | "Düğümden" için iç object_id değer. |
from_id_\<hex_string> |
BIGINT | 1 | "Düğümden" için iç graf kimliği değeri. |
$from_id_\<hex_string> |
NVARCHAR | 0 | "düğümden" karakterinin gösterimi. |
to_obj_id_\<hex_string> |
INT | 1 | "Düğüme" için iç object_id . |
to_id_\<hex_string> |
BIGINT | 1 | "Düğüme" için iç grafik kimliği değeri. |
$to_id_\<hex_string> |
NVARCHAR | 0 | "Düğüme" öğesinin dış karakter gösterimi. |
Sistem işlevleri
Grafik tablolarındaki sahte sütunlarla etkileşime geçmek için aşağıdaki yerleşik işlevleri kullanabilirsiniz. İlgili T-SQL işlev başvurularında bu işlevlerin her biri için ayrıntılı başvurular sağlanır.
| Built-in | Description |
|---|---|
| OBJECT_ID_FROM_NODE_ID | Grafik tablosunun nesne kimliğini bir node_idöğesinden ayıklayın. |
| GRAPH_ID_FROM_NODE_ID | grafik kimliği değerini bir node_iddosyasından ayıklayın. |
| NODE_ID_FROM_PARTS | Grafik tablosu için nesne kimliğinden ve grafik kimliği değerinden bir node_id oluşturma. |
| OBJECT_ID_FROM_EDGE_ID | Grafik tablosunun nesne kimliğini öğesinden edge_idayıklayın. |
| GRAPH_ID_FROM_EDGE_ID | Belirli edge_idbir için grafik kimliği değerini ayıklayın. |
| EDGE_ID_FROM_PARTS | Grafik tablosu ve grafik kimliği değeri için nesne kimliğinden oluşturma edge_id . |
Transact-SQL referans
SQL Server'da ve Azure SQL Veritabanı'nda sunulan ve grafik nesneleri oluşturmayı ve sorgulamayı sağlayan Transact-SQL uzantılarını öğrenin. Sorgu dili uzantıları, ASCII resim söz dizimini kullanarak grafı sorgulamaya ve çapraz geçişe yardımcı olur.
Veri Tanımı Dili (DDL) deyimleri
| Task | İlgili Makale | Notes |
|---|---|---|
| CREATE TABLE | TABLO OLUŞTUR (Transact-SQL) |
CREATE TABLE artık AS NODE veya AS EDGE tablosu oluşturmayı destekleyecek şekilde genişletilmiştir. Edge tablosunun kullanıcı tanımlı özniteliklere sahip olması gerekmez. |
| ALTER TABLE | ALTER TABLE (Transact-SQL) | Düğüm ve kenar tabloları, ilişkisel tabloyla aynı şekilde değiştirilebilir.ALTER TABLE Kullanıcılar kullanıcı tanımlı sütunlar, dizinler veya kısıtlamalar ekleyebilir veya değiştirebilir. Ancak, veya $node_idgibi $edge_id iç graf sütunlarını değiştirmek hatayla sonuçlanır. |
| İNDİS OLUŞTUR | İNDEKS OLUŞTUR (Transact-SQL) | Kullanıcılar, düğüm ve kenar tablolarında sahte sütunlarda ve kullanıcı tanımlı sütunlarda dizinler oluşturabilir. Kümelenmiş ve kümelenmemiş columnstore dizinleri de dahil olmak üzere tüm dizin türleri desteklenir. |
| EDGE KıSıTLAMALARı OLUŞTURMA | EDGE KıSıTLAMALARı (Transact-SQL) | Kullanıcılar artık belirli semantiği zorunlu tutmak ve veri bütünlüğünü korumak için kenar tablolarında kenar kısıtlamaları oluşturabilir |
| DROP TABLE | DROP TABLE (Transact-SQL) |
Düğüm ve kenar tabloları, ilişkisel tabloyla aynı şekilde bırakılabilir.DROP TABLE Şu anda kenarlar tarafından başvurulan düğümlerin silinmesini önlemeye yönelik bir mekanizma yoktur. Bir düğüm silindikten (veya düğüm tablosunun tamamı bırakıldığında) kenarların art arda silinmesi desteklenmemektedir. Bu gibi durumlarda, grafiğin tutarlılığını korumak için silinen düğümlere bağlı tüm kenarların el ile silinmesi gerekir. |
Veri İşleme Dili (DML) deyimleri
| Task | İlgili Makale | Notes |
|---|---|---|
| INSERT | INSERT (Transact-SQL) | Düğüm tablosuna ekleme, ilişkisel tabloya eklemekten farklı değildir. Sütun değerleri $node_id otomatik olarak oluşturulur. veya $node_id sütununa değer $edge_id eklemeye çalışmak hatayla sonuçlanır. Kullanıcıların kenar tablosuna eklerken ve $from_id sütunları için $to_id değer sağlaması gerekir.
$from_id
$to_id ve $node_id belirli bir kenarın bağlandığını düğümlerin değerleridir. |
| DELETE | SILME (Transact-SQL) | Düğüm veya kenar tablolarındaki veriler, ilişkisel tablolardan silindiği şekilde silinebilir. Ancak, bu sürümde, bir düğümün silinmesinin desteklenmemesi üzerine, silinen bir düğüme işaret eden kenar olmamasını ve kenarların basamaklı olarak silinmesini sağlamaya yönelik bir kısıtlama yoktur. Bir düğüm silindiğinde, bu düğüme bağlanan tüm kenarların da silinmesi önerilir. |
| UPDATE | GÜNCELLEME (Transact-SQL) | Kullanıcı tanımlı sütunlardaki değerler UPDATE deyimi kullanılarak güncelleştirilebilir. İç grafik sütunlarını , $node_id$edge_id$from_id ve $to_idgüncelleştiremezsiniz. |
| MERGE | BIRLEŞME (Transact-SQL) |
MERGE deyimi bir düğümde veya kenar tablosunda desteklenir. |
Sorgu Cümleleri
| Task | İlgili Makale | Notes |
|---|---|---|
| SELECT | SEÇ (Transact-SQL) | Düğümler ve kenarlar tablo olarak depolandığından, çoğu tablo işlemi düğüm ve kenar tablolarında da desteklenir. |
| MATCH | MAÇ (Transact-SQL) | MATCH yerleşik, desen eşleştirmeyi ve grafikte dolaşmayı desteklemek için kullanıma sunulmuştur. |
Limitations
Düğüm ve kenar tablolarında belirli sınırlamalar vardır:
- Yerel veya genel geçici tablolar düğüm veya kenar tabloları olamaz.
- Tablo türleri ve tablo değişkenleri düğüm veya kenar tablosu olarak bildirilemiyor.
- Düğüm ve kenar tabloları, sistem sürümüne dayalı zamana bağlı tablolar olarak oluşturulamaz.
- Düğüm ve kenar tabloları bellek için iyileştirilmiş tablolar olamaz.
- Kullanıcılar UPDATE deyimini kullanarak bir kenarın
$from_idve$to_idsütunlarını güncelleştiremez. Bir kenar tarafından başvuruda bulunan düğümleri güncelleştirmek için kullanıcıların yeni düğümlere işaret eden yeni bir kenar eklemesi ve öncekini silmesi gerekir. - Grafik nesnelerindeki veritabanları arası sorgular desteklenmez.
- Graph sahte sütunları (
node_id,$from_id$to_idveedge_id) sıralı kümelenmiş columnstore dizini için sıralama sütunları olarak kullanılamaz. Sıralı kümelenmiş columnstore için sıralama sütunları olarak herhangi bir grafik sahte sütun kullanmaya çalışmak hataylaMsg 102: Incorrect syntaxsonuçlanır. - Doku SQL veritabanında SQL Graph'a izin verilir, ancak Node ve Edge tabloları Doku OneLake'e yansıtılmaz.
Ayrıca bakınız
Sonraki Adımlar
- SQL Graph'ı kullanmaya başlamak için bkz. SQL Graph Veritabanı - Örnek