> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
המימוש הנוכחי של אחסון שאילתות ב-Neo4j סובל מחוסר ביסודות משתמשים/מערכות, מה שיוצר בעיות אבטחה במצב רב-משתמשים. כל השלישים מאוחסנים במרחב גרף אחד ללא מנגנון למניעת משתמשים מגישה לנתונים של משתמשים אחרים או מיזוג מערכות.
בניגוד למערכות אחסון אחרות ב-TrustGraph:
- **Cassandra**: משתמשת במרחבי מפתחות נפרדים לכל משתמש וטבלאות לכל מערכת
- הודעות `Triples` מכילות שדות `metadata.user`ו-`metadata.collection`
- שירות האחסון מקבל מידע על משתמשים/מערכות אך מתעלם ממנו
- שירות השאילתות מצפה לשדות `user`ו-`collection` בבקשת `TriplesQueryRequest` אך מתעלם מהם
### בעיית אבטחה נוכחית
```cypher
# כל משתמש יכול לשאול כל נתונים - אין ביסודות
MATCH (src:Node)-[rel:Rel]->(dest:Node)
RETURN src.uri, rel.uri, dest.uri
```
## פתרון מוצע: סינון מבוסס תכונות (מומלץ)
### סקירה כללית
הוסף תכונות `user`ו-`collection` לכל הצמתים והקשרים, ואז לסנן את כל הפעולות לפי התכונות הללו. גישה זו מספקת ביסודות חזקות תוך שמירה על גמישות שאילתות והתאמה לגרסאות קודמות.
### שינויים במודל נתונים
#### מבנה צומת משופר
```cypher
// ישויות צומת
CREATE (n:Node {
uri: "http://example.com/entity1",
user: "john_doe",
collection: "production_v1"
})
// ישויות Literal
CREATE (n:Literal {
value: "literal value",
user: "john_doe",
collection: "production_v1"
})
```
#### מבנה קשר משופר
```cypher
// קשרים עם תכונות משתמש/מערכת
CREATE (src)-[:Rel {
uri: "http://example.com/predicate1",
user: "john_doe",
collection: "production_v1"
}]->(dest)
```
#### אינדקסים מעודכנים
```cypher
// אינדקסים משולבים לסינון יעיל
CREATE INDEX node_user_collection_uri FOR (n:Node) ON (n.user, n.collection, n.uri);
CREATE INDEX literal_user_collection_value FOR (n:Literal) ON (n.user, n.collection, n.value);
CREATE INDEX rel_user_collection_uri FOR ()-[r:Rel]-() ON (r.user, r.collection, r.uri);
// שמירה על אינדקסים קיימים לאחור התאמה (אופציונלי)
```
## תוכנית יישום
### שלב 1: יסודות (שבוע 1)
1. [ ] עדכן את שירות האחסון לקבל ולשמור תכונות משתמש/מערכת
2. [ ] הוסף אינדקסים משולבים לביצוע שאילתות מיטבי
3. [ ] יישם שכבת התאמה לגרסאות קודמות
4. [ ] צור בדיקות יחידה לפונקציונליות החדשה
### שלב 2: עדכוני שאילתות (שבוע 2)
1. [ ] עדכן את כל דפוסי השאילתות כדי לכלול סינון משתמש/מערכת
2. [ ] הוסף אימות שאילתות ובקרת אבטחה
3. [ ] עדכן בדיקות אינטגרציה
4. [ ] בדיקות ביצוע עם שאילתות מסוננות
### שלב 3: העברה והפצה (שבוע 3)
1. [ ] צור סקריפטים להעברת נתונים עבור מופעי Neo4j קיימים
2. [ ] תיעוד והוראות הפעלה
3. [ ] ניטור והתראות על הפרות ביסודות
4. [ ] בדיקות סיום עם מספר משתמשים/מערכות
### שלב 4: חיזוק (שבוע 4)
1. [ ] הסר את מצב ההתאמה לגרסאות קודמות
2. [ ] הוסף רישום ביקורת מקיף
3. [ ] ביקורת אבטחה וגישה
4. [ ] בדיקות ביצוע
## אסטרטגיית בדיקה
### בדיקות יחידה
```python
def test_user_collection_isolation():
# שמור שליש עבור משתמש1/מערכת1
processor.store_triples(triples_user1_coll1)
# שמור שליש עבור משתמש2/מערכת2
processor.store_triples(triples_user2_coll2)
# שאילת משתמש1 צריך רק להחזיר את הנתונים של משתמש1
3.**העברה**: 100% נתונים קיימים מוצלחים בהעברה ללא אובדן
4.**שימושיות**: כל דפוסי השאילתות הקיימים עובדים עם הקשר משתמש/מערכת
5.**תאימות**: תיעוד מלא של גישה לנתונים מבוסס משתמש/מערכת
## מסקנה
הגישה המבוססת על תכונות מספקת את האיזון הטוב ביותר של אבטחה, ביצועים וקלות תחזוקה להוספת ביסודות משתמשים/מערכות ב-Neo4j. היא תואמת עם דפוסי הרב-משתמשים הקיימים ב-TrustGraph תוך ניצול החוזקות של Neo4j בשאילתות גרפים ואינדקסים.