mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-09 05:12:12 +02:00
update more languages
Signed-off-by: Alex Jenkins <kjenkins60@gatech.edu>
This commit is contained in:
parent
835acaa70e
commit
16c2f12a54
249 changed files with 117186 additions and 186 deletions
|
|
@ -8,6 +8,7 @@ GraphQL sorgu hizmeti, Cassandra'da depolanan yapılandırılmış verileri sorg
|
|||
|
||||
## Hedefler
|
||||
|
||||
<<<<<<< HEAD
|
||||
**Dinamik Şema Desteği**: Hizmeti yeniden başlatmaya gerek kalmadan yapılandırmadaki şema değişikliklerine otomatik olarak uyum sağlayın.
|
||||
**GraphQL Standartlarına Uygunluk**: Mevcut GraphQL araçları ve istemcileriyle uyumlu, standart bir GraphQL arayüzü sağlayın.
|
||||
**Verimli Cassandra Sorguları**: GraphQL sorgularını, bölüm anahtarlarını ve dizinleri dikkate alarak verimli Cassandra CQL sorgularına dönüştürün.
|
||||
|
|
@ -32,6 +33,32 @@ Cassandra tablolarını sorgulamak için standart bir GraphQL arayüzü.
|
|||
TrustGraph yapılandırmasından dinamik olarak GraphQL şemaları oluşturma.
|
||||
GraphQL sorgularını Cassandra CQL'ye verimli bir şekilde dönüştürme.
|
||||
Alan çözümleyicileri aracılığıyla ilişki çözümlemesini destekleme.
|
||||
=======
|
||||
**Dinamik Şema Desteği**: Hizmeti yeniden başlatmadan yapılandırmadaki şema değişikliklerine otomatik olarak uyum sağlama
|
||||
**GraphQL Standartlarına Uygunluk**: Mevcut GraphQL araçları ve istemcileriyle uyumlu, standart bir GraphQL arayüzü sağlama
|
||||
**Verimli Cassandra Sorguları**: GraphQL sorgularını, bölüm anahtarlarını ve dizinleri dikkate alarak verimli Cassandra CQL sorgularına çevirme
|
||||
**İlişki Çözümleme**: Farklı nesne türleri arasındaki ilişkiler için GraphQL alan çözümleyicilerini destekleme
|
||||
**Tür Güvenliği**: Şema tanımlarına dayalı olarak tür güvenli sorgu yürütme ve yanıt oluşturma
|
||||
**Ölçeklenebilir Performans**: Uygun bağlantı havuzu ve sorgu optimizasyonu ile eşzamanlı sorguları verimli bir şekilde işleme
|
||||
**İstek/Yanıt Entegrasyonu**: TrustGraph'ın Pulsar tabanlı istek/yanıt kalıbıyla uyumluluğu koruma
|
||||
**Hata İşleme**: Şema uyumsuzlukları, sorgu hataları ve veri doğrulama sorunları için kapsamlı hata raporlama sağlama
|
||||
|
||||
## Arka Plan
|
||||
|
||||
Yapılandırılmış veri depolama uygulaması (trustgraph-flow/trustgraph/storage/objects/cassandra/), nesneleri TrustGraph'ın yapılandırma sisteminde depolanan şema tanımlarına göre Cassandra tablolarına yazar. Bu tablolar, koleksiyonlar içindeki verimli sorguları etkinleştiren bileşik bir bölüm anahtarı yapısı ve şema tanımlı birincil anahtarlar kullanır.
|
||||
|
||||
Bu özellik tarafından ele alınan mevcut sınırlamalar:
|
||||
Cassandra'da depolanan yapılandırılmış veri için bir sorgu arayüzünün olmaması
|
||||
Yapılandırılmış veri için GraphQL'in güçlü sorgu yeteneklerinden yararlanamama
|
||||
İlişkili nesneler arasındaki ilişki geçişi için destek eksikliği
|
||||
Yapılandırılmış veri erişimi için standart bir sorgu dilinin olmaması
|
||||
|
||||
GraphQL sorgu hizmeti, bu boşlukları aşağıdaki şekilde dolduracaktır:
|
||||
Cassandra tablolarını sorgulamak için standart bir GraphQL arayüzü sağlama
|
||||
TrustGraph yapılandırmasından dinamik olarak GraphQL şemaları oluşturma
|
||||
GraphQL sorgularını verimli bir şekilde Cassandra CQL'ye çevirme
|
||||
Alan çözümleyicileri aracılığıyla ilişki çözümlemeyi destekleme
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## Teknik Tasarım
|
||||
|
||||
|
|
@ -44,6 +71,7 @@ GraphQL sorgu hizmeti, yerleşik kalıpları izleyen yeni bir TrustGraph akış
|
|||
**Ana Bileşenler**:
|
||||
|
||||
1. **GraphQL Sorgu Hizmeti İşlemcisi**
|
||||
<<<<<<< HEAD
|
||||
Temel FlowProcessor sınıfını genişletir.
|
||||
Mevcut sorgu hizmetlerine benzer bir istek/yanıt kalıbını uygular.
|
||||
Şema güncellemeleri için yapılandırmayı izler.
|
||||
|
|
@ -72,6 +100,36 @@ GraphQL sorgu hizmeti, yerleşik kalıpları izleyen yeni bir TrustGraph akış
|
|||
N+1 sorgularından kaçınmak için verimli toplu yükleme gerçekleştirir.
|
||||
Çözümlenen ilişkileri istek bağlamı içinde önbelleğe alır.
|
||||
Hem ileri hem de geri ilişki geçişini destekler.
|
||||
=======
|
||||
Temel FlowProcessor sınıfını genişletir
|
||||
Mevcut sorgu hizmetlerine benzer bir istek/yanıt kalıbını uygular
|
||||
Şema güncellemeleri için yapılandırmayı izler
|
||||
GraphQL şemasını yapılandırmayla senkronize tutar
|
||||
|
||||
2. **Dinamik Şema Oluşturucu**
|
||||
TrustGraph RowSchema tanımlarını GraphQL türlerine dönüştürür
|
||||
Uygun alan tanımlarıyla GraphQL nesne türleri oluşturur
|
||||
Koleksiyon tabanlı çözümleyicilerle kök Sorgu türünü oluşturur
|
||||
Yapılandırma değiştiğinde GraphQL şemasını günceller
|
||||
|
||||
3. **Sorgu Yürütücüsü**
|
||||
Gelen GraphQL sorgularını Strawberry kütüphanesi kullanarak ayrıştırır
|
||||
Sorguları mevcut şemaya göre doğrular
|
||||
Sorguları yürütür ve yapılandırılmış yanıtlar döndürür
|
||||
Ayrıntılı hata mesajlarıyla hataları zarif bir şekilde işler
|
||||
|
||||
4. **Cassandra Sorgu Çevirmeni**
|
||||
GraphQL seçimlerini CQL sorgularına dönüştürür
|
||||
Mevcut dizinlere ve bölüm anahtarlarına göre sorguları optimize eder
|
||||
Filtrelemeyi, sayfalama ve sıralamayı işler
|
||||
Bağlantı havuzunu ve oturum yaşam döngüsünü yönetir
|
||||
|
||||
5. **İlişki Çözümleyici**
|
||||
Nesne ilişkileri için alan çözümleyicilerini uygular
|
||||
N+1 sorgularından kaçınmak için verimli toplu yükleme gerçekleştirir
|
||||
Çözümlenen ilişkileri istek bağlamı içinde önbelleğe alır
|
||||
Hem ileri hem de geri ilişki geçişini destekler
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### Yapılandırma Şeması İzleme
|
||||
|
||||
|
|
@ -84,7 +142,11 @@ self.register_config_handler(self.on_schema_config)
|
|||
Şemalar değiştiğinde:
|
||||
1. Yapılandırmadan yeni şema tanımlarını ayrıştırın.
|
||||
2. GraphQL türlerini ve çözümleyicileri yeniden oluşturun.
|
||||
<<<<<<< HEAD
|
||||
3. Çalıştırılabilir şemayı güncelleyin.
|
||||
=======
|
||||
3. Uygulanabilir şemayı güncelleyin.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
4. Şemaya bağlı tüm önbellekleri temizleyin.
|
||||
|
||||
### GraphQL Şema Oluşturma
|
||||
|
|
@ -129,7 +191,11 @@ Yapılandırmadaki her RowSchema için aşağıdaki öğeleri oluşturun:
|
|||
CQL sorgusunu Cassandra'ya karşı yürütün.
|
||||
Sonuçları GraphQL yanıt yapısına eşleyin.
|
||||
Herhangi bir ilişki alanını çözün.
|
||||
<<<<<<< HEAD
|
||||
Yanıtı GraphQL spesifikasyonuna göre biçimlendirin.
|
||||
=======
|
||||
Yanıtı GraphQL belirtimine göre biçimlendirin.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
5. **Yanıt Teslimi**:
|
||||
Sonuçlarla ObjectsQueryResponse oluşturun.
|
||||
|
|
@ -138,7 +204,11 @@ Yapılandırmadaki her RowSchema için aşağıdaki öğeleri oluşturun:
|
|||
|
||||
### Veri Modelleri
|
||||
|
||||
<<<<<<< HEAD
|
||||
> **Not**: `trustgraph-base/trustgraph/schema/services/structured_query.py`'da mevcut bir StructuredQueryRequest/Response şeması bulunmaktadır. Ancak, bu şemada kritik alanlar (kullanıcı, koleksiyon) eksiktir ve alt optimal türler kullanılmaktadır. Aşağıdaki şemalar, önerilen gelişmeyi temsil etmektedir; bu şemalar ya mevcut şemaları değiştirmeli ya da yeni ObjectsQueryRequest/Response türleri olarak oluşturulmalıdır.
|
||||
=======
|
||||
> **Not**: `trustgraph-base/trustgraph/schema/services/structured_query.py`'da mevcut bir StructuredQueryRequest/Response şeması bulunmaktadır. Ancak, bu şema kritik alanları (kullanıcı, koleksiyon) içermemekte ve alt optimal türler kullanmaktadır. Aşağıdaki şemalar, önerilen gelişmeyi temsil etmektedir; bunlar ya mevcut şemaları değiştirmeli ya da yeni ObjectsQueryRequest/Response türleri olarak oluşturulmalıdır.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### İstek Şeması (ObjectsQueryRequest)
|
||||
|
||||
|
|
@ -154,7 +224,11 @@ class ObjectsQueryRequest(Record):
|
|||
```
|
||||
|
||||
**Mevcut StructuredQueryRequest'ten yapılan değişikliklerin gerekçesi:**
|
||||
<<<<<<< HEAD
|
||||
Diğer sorgu hizmetlerinin kalıbına uygun olarak `user` ve `collection` alanları eklendi.
|
||||
=======
|
||||
Diğer sorgu hizmetlerinin kalıbına uygun olması için `user` ve `collection` alanları eklendi.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Bu alanlar, Cassandra anahtar alanını ve koleksiyonu tanımlamak için gereklidir.
|
||||
Değişkenler şu anda Map(String()) olarak kalmaktadır, ancak ideal olarak tüm JSON türlerini desteklemelidir.
|
||||
|
||||
|
|
@ -299,11 +373,19 @@ Aracılık karar akışlarıyla entegrasyon
|
|||
|
||||
## Güvenlik Hususları
|
||||
|
||||
<<<<<<< HEAD
|
||||
**Sorgu Derinliği Sınırlaması**: Performans sorunlarına neden olabilecek derinlemesine iç içe sorguları önleme
|
||||
**Sorgu Karmaşıklığı Analizi**: Kaynak tükenmesini önlemek için sorgu karmaşıklığını sınırlama
|
||||
**Alan Düzeyi İzinleri**: Kullanıcı rollerine göre alan düzeyinde erişim kontrolü için gelecekteki destek
|
||||
**Giriş Temizleme**: Enjeksiyon saldırılarını önlemek için tüm sorgu girişlerini doğrulama ve temizleme
|
||||
**Hız Sınırlaması**: Kullanıcı/koleksiyon başına sorgu hız sınırlaması uygulama
|
||||
=======
|
||||
**Sorgu Derinliği Sınırlandırması**: Performans sorunlarına neden olabilecek derinlemesine iç içe sorguları önleme
|
||||
**Sorgu Karmaşıklığı Analizi**: Kaynak tükenmesini önlemek için sorgu karmaşıklığını sınırlama
|
||||
**Alan Düzeyi İzinleri**: Kullanıcı rollerine göre alan düzeyinde erişim kontrolü için gelecekteki destek
|
||||
**Giriş Temizleme**: Enjeksiyon saldırılarını önlemek için tüm sorgu girişlerini doğrulama ve temizleme
|
||||
**Hız Sınırlandırması**: Kullanıcı/koleksiyon başına sorgu hız sınırlandırması uygulama
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## Performans Hususları
|
||||
|
||||
|
|
@ -352,7 +434,11 @@ Bu yeni bir özellik olduğu için herhangi bir geçiş gerekli değildir. Hizme
|
|||
1-2. Hafta: Temel hizmet uygulaması ve şema oluşturma
|
||||
3. Hafta: Sorgu yürütme ve CQL çevirisi
|
||||
4. Hafta: İlişki çözümü ve optimizasyon
|
||||
<<<<<<< HEAD
|
||||
5. Hafta: Test etme ve performans ayarlaması
|
||||
=======
|
||||
5. Hafta: Test ve performans ayarlaması
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
6. Hafta: Ağ geçidi entegrasyonu ve dokümantasyon
|
||||
|
||||
## Açık Sorular
|
||||
|
|
@ -362,8 +448,13 @@ Bu yeni bir özellik olduğu için herhangi bir geçiş gerekli değildir. Hizme
|
|||
Seçenek: Aynı anda birden fazla şema sürümünü destekleyin
|
||||
|
||||
2. **Önbellekleme Stratejisi**: Sorgu sonuçları önbelleğe alınmalı mı?
|
||||
<<<<<<< HEAD
|
||||
Dikkat edilmesi gerekenler: Zaman tabanlı son kullanma tarihi
|
||||
Dikkat edilmesi gerekenler: Olay tabanlı geçersiz kılma
|
||||
=======
|
||||
Dikkate alınması gerekenler: Zaman tabanlı son kullanma tarihi
|
||||
Dikkate alınması gerekenler: Olay tabanlı geçersiz kılma
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
3. **Federasyon Desteği**: Hizmet, diğer veri kaynaklarıyla birleştirme için GraphQL federasyonunu desteklemeli mi?
|
||||
Yapılandırılmış ve grafik veriler arasında birleşik sorguları etkinleştirir
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue