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
|
|
@ -2,26 +2,44 @@
|
|||
|
||||
## Overview
|
||||
|
||||
<<<<<<< HEAD
|
||||
מפרט זה מתאר את יישום ממשק שאילתות GraphQL עבור אחסון נתונים מובנים של TrustGraph ב-Apache Cassandra. בהתבסס על יכולות הנתונים המובנים המתוארות במפרט structured-data.md, מסמך זה מפרט כיצד שאילתות GraphQL יבוצעו כנגד טבלאות Cassandra המכילות אובייקטים מובנים שחולצו והועברו.
|
||||
=======
|
||||
מפרט זה מתאר את יישום ממשק שאילתות GraphQL עבור אחסון נתונים מובנים של TrustGraph ב-Apache Cassandra. בהתבסס על יכולות הנתונים המובנים המתוארות במפרט structured-data.md, מסמך זה מפרט כיצד שאילתות GraphQL יבוצעו כנגד טבלאות Cassandra המכילות אובייקטים מובנים שחולצו ויועברו.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
שירות שאילתות GraphQL יספק ממשק גמיש ובטוח טיפוסית לשאילתות נתונים מובנים המאוחסנים ב-Cassandra. הוא יסתגל באופן דינמי לשינויים בסכימה, יתמוך בשאילתות מורכבות כולל קשרים בין אובייקטים, וישתלב בצורה חלקה עם ארכיטקטורת העברת הודעות הקיימת של TrustGraph.
|
||||
|
||||
## Goals
|
||||
|
||||
**תמיכה דינמית בסכימה**: הסתגלות אוטומטית לשינויים בסכימה בתצורה ללא אתחולים מחדש של השירות
|
||||
<<<<<<< HEAD
|
||||
**עמידה בתקני GraphQL**: מתן ממשק GraphQL סטנדרטי התואם לכלי לקוחות GraphQL קיימים
|
||||
**שאילתות Cassandra יעילות**: המרת שאילתות GraphQL לשאילתות CQL יעילות של Cassandra תוך כיבוד מפתחות מחיצה ואינדקסים
|
||||
**פתרון קשרים**: תמיכה במאפייני פותרים עבור קשרים בין סוגי אובייקטים שונים
|
||||
**בטיחות טיפוסים**: הבטחת ביצוע שאילתות ובניית תגובות בצורה בטוחה טיפוסית בהתבסס על הגדרות סכימה
|
||||
**ביצועים ניתנים להרחבה**: טיפול יעיל בשאילתות מקבילות עם ניהול חיבורים מתאים ואופטימיזציה של שאילתות
|
||||
=======
|
||||
**עמידה בתקני GraphQL**: מתן ממשק GraphQL סטנדרטי התואם לכלי ולקוחות GraphQL קיימים
|
||||
**שאילתות Cassandra יעילות**: המרת שאילתות GraphQL לשאילתות CQL יעילות של Cassandra תוך כיבוד מפתחות מחיצה ואינדקסים
|
||||
**פתרון קשרים**: תמיכה בפתרוני שדות עבור קשרים בין סוגי אובייקטים שונים
|
||||
**בטיחות טיפוסים**: הבטחת ביצוע שאילתות ובניית תגובות בצורה בטוחה טיפוסית בהתבסס על הגדרות סכימה
|
||||
**ביצועים ניתנים להרחבה**: טיפול יעיל בשאילתות מקבילות עם ניהול בריכת חיבורים ואופטימיזציה של שאילתות
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
**אינטגרציה של בקשות/תגובות**: שמירה על תאימות לדפוס בקשות/תגובות המבוסס על Pulsar של TrustGraph
|
||||
**טיפול בשגיאות**: מתן דיווח מקיף על שגיאות עבור חוסר התאמה בסכימה, שגיאות שאילתות ובעיות אימות נתונים
|
||||
|
||||
## Background
|
||||
|
||||
<<<<<<< HEAD
|
||||
יישום אחסון הנתונים המובנים (trustgraph-flow/trustgraph/storage/objects/cassandra/) כותב אובייקטים לטבלאות Cassandra בהתבסס על הגדרות סכימה המאוחסנות במערכת התצורה של TrustGraph. טבלאות אלה משתמשות במבנה מפתח מחיצה מורכב עם אוספים ומפתחות ראשיים המוגדרים בסכימה, המאפשרות שאילתות יעילות בתוך אוספים.
|
||||
|
||||
מגבלות קיימות שספציפיקציה זו מתייחסת אליהן:
|
||||
=======
|
||||
יישום אחסון הנתונים המובנים (trustgraph-flow/trustgraph/storage/objects/cassandra/) כותב אובייקטים לטבלאות Cassandra בהתבסס על הגדרות סכימה המאוחסנות במערכת התצורה של TrustGraph. טבלאות אלה משתמשות במבנה מפתח מחיצה מורכב עם אוספים ומפתחות ראשיים המוגדרים בסכימה, המאפשרים שאילתות יעילות בתוך אוספים.
|
||||
|
||||
מגבלות נוכחיות שמתפרט זה מטפל בהן:
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
אין ממשק שאילתות עבור הנתונים המובנים המאוחסנים ב-Cassandra
|
||||
חוסר יכולת לנצל את יכולות השאילתות החזקות של GraphQL עבור נתונים מובנים
|
||||
חוסר תמיכה במעבר על קשרים בין אובייקטים קשורים
|
||||
|
|
@ -31,7 +49,11 @@
|
|||
מתן ממשק GraphQL סטנדרטי לשאילתות של טבלאות Cassandra
|
||||
יצירת סכימות GraphQL באופן דינמי מתצורה של TrustGraph
|
||||
המרת יעילה של שאילתות GraphQL לשאילתות CQL של Cassandra
|
||||
<<<<<<< HEAD
|
||||
תמיכה בפתרון קשרים באמצעות פותרים של שדות
|
||||
=======
|
||||
תמיכה בפתרון קשרים באמצעות פתרוני שדות
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## Technical Design
|
||||
|
||||
|
|
@ -49,10 +71,17 @@
|
|||
מנטר את התצורה עבור עדכוני סכימה
|
||||
שומר על סכימת GraphQL מסונכרנת עם התצורה
|
||||
|
||||
<<<<<<< HEAD
|
||||
2. **מחולל סכימה דינמי**
|
||||
ממיר הגדרות RowSchema של TrustGraph לטיפוסי GraphQL
|
||||
יוצר טיפוסי אובייקטים של GraphQL עם הגדרות שדות מתאימות
|
||||
מייצר טיפוס שורש Query עם פותרים מבוססי אוספים
|
||||
=======
|
||||
2. **מחולל סכימה דינמית**
|
||||
ממיר הגדרות RowSchema של TrustGraph לסוגי GraphQL
|
||||
יוצר סוגי אובייקטים של GraphQL עם הגדרות שדות מתאימות
|
||||
מייצר סוג שאילתא ראשי עם פותרים מבוססי אוספים
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
מעדכן את סכימת GraphQL כאשר התצורה משתנה
|
||||
|
||||
3. **מבצע שאילתות**
|
||||
|
|
@ -65,10 +94,17 @@
|
|||
ממיר בחירות GraphQL לשאילתות CQL
|
||||
מייעל שאילתות בהתבסס על אינדקסים ומפתחות מחיצה זמינים
|
||||
מטפל בסינון, דפוס ומיון
|
||||
<<<<<<< HEAD
|
||||
מנהל ניהול חיבורים ומחזור חיים של סשן
|
||||
|
||||
5. **פותר קשרים**
|
||||
מיישם פותרים של שדות עבור קשרים בין אובייקטים
|
||||
=======
|
||||
מנהל ניהול בריכת חיבורים ומחזור חיים של סשן
|
||||
|
||||
5. **פתרון קשרים**
|
||||
מיישם פתרוני שדות עבור קשרים בין אובייקטים
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
מבצע טעינה באצווה יעילה כדי למנוע שאילתות N+1
|
||||
שומר על קשרים פתורים בהקשר הבקשה
|
||||
תומך במעבר קשרים קדימה ואחורה
|
||||
|
|
@ -138,7 +174,11 @@ self.register_config_handler(self.on_schema_config)
|
|||
|
||||
### מודלים של נתונים
|
||||
|
||||
<<<<<<< HEAD
|
||||
> **הערה**: קיימת סכימת StructuredQueryRequest/Response קיימת ב-`trustgraph-base/trustgraph/schema/services/structured_query.py`. עם זאת, היא חסרה שדות קריטיים (משתמש, אוסף) ומשתמשת בסוגים לא אופטימליים. הסכימות שלהלן מייצגות את ההתפתחות המומלצת, שעליה להחליף את הסכימות הקיימות או ליצור סוגי ObjectsQueryRequest/Response חדשים.
|
||||
=======
|
||||
> **הערה**: קיימת סכימת StructuredQueryRequest/Response קיימת ב-`trustgraph-base/trustgraph/schema/services/structured_query.py`. עם זאת, היא חסרה שדות קריטיים (משתמש, אוסף) ומשתמשת בסוגים לא אופטימליים. הסכימות שלהלן מייצגות את ההתפתחות המומלצת, שעשויה להחליף את הסכימות הקיימות או ליצור סוגי ObjectsQueryRequest/Response חדשים.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### סכימת בקשה (ObjectsQueryRequest)
|
||||
|
||||
|
|
@ -153,12 +193,21 @@ class ObjectsQueryRequest(Record):
|
|||
operation_name = String() # Operation to execute for multi-operation documents
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
**ההצדקה לשינויים מתוך בקשת StructuredQueryRequest קיימת:**
|
||||
הוספת השדות `user` ו-`collection` כדי להתאים לדפוס של שירותי שאילתות אחרים.
|
||||
שדות אלה חיוניים לזיהוי ה-keyspace והקולקציה של Cassandra.
|
||||
המשתנים נשארים מסוג Map(String()) כרגע, אך באופן אידיאלי צריכים לתמוך בכל סוגי ה-JSON.
|
||||
|
||||
#### סכימת תגובה (ObjectsQueryResponse)
|
||||
=======
|
||||
**ההצדקה לשינויים מהבקשה המובנית הקיימת (StructuredQueryRequest):**
|
||||
הוספת השדות `user` ו-`collection` כדי להתאים לדפוס של שירותי שאילתות אחרים.
|
||||
שדות אלה חיוניים לזיהוי מרחב המפתחות (keyspace) והאוסף (collection) של Cassandra.
|
||||
המשתנים נשארים מסוג Map(String()) כרגע, אך באופן אידיאלי צריכים לתמוך בכל סוגי ה-JSON.
|
||||
|
||||
#### סכימת התגובה (ObjectsQueryResponse)
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
```python
|
||||
from pulsar.schema import Record, String, Array
|
||||
|
|
@ -198,7 +247,11 @@ class ObjectsQueryResponse(Record):
|
|||
|
||||
3. **טעינה באצווה:**
|
||||
לאסוף שאילתות קשר
|
||||
<<<<<<< HEAD
|
||||
לבצע אותן באצווה כדי להפחית את מספר הפעמים
|
||||
=======
|
||||
לבצע אותן באצווה כדי להפחית מעברים
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
לשמור תוצאות בהקשר הבקשה
|
||||
|
||||
4. **ניהול חיבורים:**
|
||||
|
|
@ -256,7 +309,11 @@ class ObjectsQueryResponse(Record):
|
|||
**Strawberry GraphQL**: להגדרת סכימת GraphQL ולביצוע שאילתות
|
||||
**Cassandra Driver**: לחיבור למסד הנתונים (בשימוש כבר במודול האחסון)
|
||||
**TrustGraph Base**: עבור FlowProcessor והגדרות סכימה
|
||||
<<<<<<< HEAD
|
||||
**Configuration System**: לניטור ועדכון סכימות
|
||||
=======
|
||||
**Configuration System**: עבור ניטור ועדכון סכימות
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### ממשק שורת הפקודה
|
||||
|
||||
|
|
@ -332,7 +389,11 @@ class ObjectsQueryResponse(Record):
|
|||
טיפול בעדכוני סכימה
|
||||
פתרון קשרים
|
||||
דפוסים של דף אחרי דף וסינון
|
||||
<<<<<<< HEAD
|
||||
תרחישי שגיאות
|
||||
=======
|
||||
תרחישי שגיאה
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### בדיקות ביצועים
|
||||
תפוקת שאילתות תחת עומס
|
||||
|
|
@ -342,8 +403,13 @@ class ObjectsQueryResponse(Record):
|
|||
|
||||
## תוכנית מעבר
|
||||
|
||||
<<<<<<< HEAD
|
||||
אין צורך במעבר מכיוון שזו יכולת חדשה. השירות י:
|
||||
1. יקרא סכימות קיימות מהתצורה
|
||||
=======
|
||||
אין צורך במעבר מכיוון שזו יכולת חדשה. השירות יעשה את הפעולות הבאות:
|
||||
1. יקרא סכימות קיימות מהגדרות
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
2. יתחבר לטבלאות Cassandra קיימות שנוצרו על ידי מודול האחסון
|
||||
3. יתחיל לקבל שאילתות מיד עם הפריסה
|
||||
|
||||
|
|
@ -352,7 +418,11 @@ class ObjectsQueryResponse(Record):
|
|||
שבוע 1-2: יישום ליבת השירות ויצירת סכימה
|
||||
שבוע 3: ביצוע שאילתות ותרגום CQL
|
||||
שבוע 4: פתרון קשרים ואופטימיזציה
|
||||
<<<<<<< HEAD
|
||||
שבוע 5: בדיקות וכוונון ביצועים
|
||||
=======
|
||||
שבוע 5: בדיקות וכיוונון ביצועים
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
שבוע 6: שילוב עם שער ותיעוד
|
||||
|
||||
## שאלות פתוחות
|
||||
|
|
@ -380,4 +450,8 @@ class ObjectsQueryResponse(Record):
|
|||
תיעוד Strawberry GraphQL: https://strawberry.rocks/
|
||||
מפרט GraphQL: https://spec.graphql.org/
|
||||
הפניה ל-Apache Cassandra CQL: https://cassandra.apache.org/doc/stable/cassandra/cql/
|
||||
תיעוד מעבד זרימת נתונים TrustGraph: תיעוד פנימי
|
||||
<<<<<<< HEAD
|
||||
תיעוד מעבד זרימת נתונים TrustGraph: תיעוד פנימי
|
||||
=======
|
||||
תיעוד מעבד זרימה של TrustGraph: תיעוד פנימי
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue