מדריך ל- GemFire ​​עם נתוני האביב

1. סקירה כללית

GemFire ​​היא תשתית לניהול נתונים מבוזרת עם ביצועים גבוהים, היושבת בין מקבץ נתונים מקבצי יישומים.

באמצעות GemFire ​​ניתן לנהל נתונים בזיכרון, מה שהופך את הגישה למהירה יותר. Spring Data מספק תצורה וגישה קלה ל- GemFire ​​מיישום Spring.

במאמר זה נבחן כיצד אנו יכולים להשתמש ב- GemFire ​​כדי לעמוד בדרישות המטמון של היישום שלנו.

2. תלות Maven

כדי להשתמש בתמיכת Spring Data GemFire, ראשית עלינו להוסיף את התלות הבאה שלנו pom.xml:

 org.springframework.data spring-data-gemfire 1.9.1.RELEASE 

הגרסה האחרונה של תלות זו נמצאת כאן.

3. תכונות בסיסיות של GemFire

3.1. מטמון

המטמון ב- GemFire ​​מספק את שירותי ניהול הנתונים החיוניים וכן מנהל את הקישוריות לעמיתים אחרים.

תצורת המטמון (cache.xml) מתאר כיצד הנתונים יופצו בין צמתים שונים:

     ...     ... 

3.2. אזורים

אזורי נתונים הם קיבוץ הגיוני בתוך מטמון עבור מערך נתונים יחיד.

פשוט שים, אזור מאפשר לנו לאחסן נתונים במספר מחשבים וירטואליים במערכת ללא התחשבות באיזה צומת הנתונים מאוחסנים בתוך האשכול.

אזורים מסווגים לשלוש קטגוריות רחבות:

  • אזור משוכפל מחזיקה את מערך הנתונים השלם בכל צומת. זה נותן ביצועי קריאה גבוהים. פעולות הכתיבה איטיות יותר שכן יש להפיץ את עדכון הנתונים לכל צומת:
  • אזור מחולק מפיץ את הנתונים כך שכל צומת מאחסן רק חלק מתוכן האזור. עותק של הנתונים נשמר באחד הצמתים האחרים. זה מספק ביצועי כתיבה טובים.
  • אזור מקומי שוכן בצומת החבר המגדיר. אין קישוריות עם צמתים אחרים בתוך האשכול.

3.3. שאילתה את המטמון

GemFire ​​מספקת שפת שאילתות בשם OQL (Object Query Language) המאפשרת לנו להתייחס לאובייקטים המאוחסנים באזורי הנתונים של GemFire. זה דומה מאוד ל- SQL בתחביר. בואו נראה איך נראית שאילתה בסיסית מאוד:

בחר DISTINCT * FROM exampleRegion

GemFire QueryService מספק שיטות ליצירת אובייקט השאילתה.

3.4. סידור נתונים

כדי לנהל את הסידור-סידור נתונים של נתונים, GemFire ​​מספקת אפשרויות אחרות מלבד סידור ג'אווה שמעניקות ביצועים גבוהים יותר, מספקת גמישות רבה יותר לאחסון נתונים ולהעברת נתונים, וכן תמיכה בשפות שונות.

עם זאת, GemFire ​​הגדירה פורמט נתונים מחליף נתונים ניידים (PDX). PDX הוא פורמט נתונים חוצה שפות המספק סידור וסילוק מהיר יותר על ידי אחסון הנתונים בשדה הנקוב אליו ניתן לגשת ישירות מבלי להזדקק לניתוק מחדש של האובייקט באופן מלא.

3.5. ביצוע פונקציות

ב- GemFire, פונקציה יכולה להתגורר בשרת וניתן להפעיל אותה מיישום לקוח או משרת אחר ללא צורך בשליחת קוד הפונקציה עצמו.

המתקשר יכול לכוון פונקציה תלויה בנתונים להפעלת מערך נתונים מסוים או להוביל פונקציית נתונים עצמאית לעבוד בשרת, חבר או קבוצת חברים מסוימים.

3.6. שאילתות רציפות

בשאילתות מתמשכות, הלקוחות מנויים לאירועים בצד השרת באמצעות סינון שאילתות מסוג SQL. השרת שולח את כל האירועים שמשנים את תוצאות השאילתה. מסירת אירועי השאילתות הרציפה משתמשת במסגרת מנוי לקוח / שרת.

התחביר לשאילתה רציפה דומה לשאילתות בסיסיות שנכתבו ב- OQL. לדוגמא, שאילתה המספקת את נתוני המלאי האחרונים מ- המניה ניתן לכתוב אזור כמו:

בחר * מתוך StockRegion כאשר s.stockStatus = 'פעיל';

כדי לקבל את עדכון הסטטוס משאילתה זו, יישום של CQListener צריך להיות מחובר עם אזור המניות:

   ...  ...  ...   

4. תמיכה באביב נתונים GemFire

4.1. תצורת Java

כדי לפשט את התצורה, Spring Data GemFire ​​מספק הערות שונות לתצורת רכיבי הליבה של GemFire:

@Configuration בכיתה ציבורית GemfireConfiguration {@Bean Properties gemfireProperties () {Properties gemfireProperties = מאפיינים חדשים (); gemfireProperties.setProperty ("שם", "SpringDataGemFireApplication"); gemfireProperties.setProperty ("mcast-port", "0"); gemfireProperties.setProperty ("רמת יומן", "config"); החזר gemfireProperties; } @Bean CacheFactoryBean gemfireCache () {CacheFactoryBean gemfireCache = חדש CacheFactoryBean (); gemfireCache.setClose (נכון); gemfireCache.setProperties (gemfireProperties ()); החזר gemfireCache; } @Bean (name = "עובד") LocalRegionFactoryBean getEmployee (מטמון סופי GemFireCache) {LocalRegionFactoryBean עובדRegion = LocalRegionFactoryBean חדש (); employeeRegion.setCache (מטמון); employeeRegion.setName ("עובד"); // ... להחזיר עובד אזור; }}

כדי להגדיר את המטמון ואת האזור GemFire, עלינו להגדיר תחילה כמה מאפיינים ספציפיים. פה mcast-port מוגדר לאפס, מה שמציין כי צומת GemFire ​​זה מושבת לצורך גילוי והפצה של שידור מולטי-קול. מאפיינים אלה מועברים אל CacheFactoryBean ליצור GemFireCache למשל.

באמצעות GemFireCache שעועית, מופע של LocalRegionFatcoryBean נוצר המייצג את האזור בתוך המטמון עבור ה- עוֹבֵד מקרים.

4.2. מיפוי ישויות

הספרייה מספקת תמיכה למיפוי אובייקטים שיש לשמור ברשת GemFire. מטא הנתונים של המיפוי מוגדרים באמצעות הערות בכיתות הדומיין:

@ Region ("עובד") שכבה ציבורית עובד {@ Id ציבור שם מחרוזת; שכר כפול ציבורי; עובד ציבורי @ PersistenceConstructor (שם מחרוזת, שכר כפול) {this.name = שם; זה.שכר = משכורת; } // גטרים / סטרים סטנדרטיים}

בדוגמה שלמעלה השתמשנו בהערות הבאות:

  • @אזור, כדי לציין את מופע האזור של ה- עוֹבֵד מעמד
  • @תְעוּדַת זֶהוּת, לביאור הנכס שישמש כמפתח מטמון
  • @PersistenceConstructor, מה שעוזר לסמן את הבנאי האחד שישמש ליצירת ישויות, למקרה של בנאים מרובים

4.3. מאגרי GemFire

לאחר מכן, בואו נסתכל על רכיב מרכזי ב- Spring Data - המאגר:

@Configuration @EnableGemfireRepositories (basePackages = "com.baeldung.spring.data.gemfire.repository") GemfireConfiguration בכיתה ציבורית {@Autowired EmployeeRepository employeeRepository; // ...}

4.4. תמיכה בשאילתת Oql

המאגרים מאפשרים הגדרה של שיטות שאילתה להפעיל ביעילות את שאילתות ה- OQL כנגד האזור שאליו ממופה הישות המנוהלת:

ממשק ציבורי @ מאגר EmployeeRepository מרחיב את CrudRepository {עובד findByName (שם מחרוזת); Iterable findBySalaryGreaterThan (משכורת כפולה); Iterable findBySalaryLessThan (משכורת כפולה); Iterable findBySalaryGreaterThanAndSalaryLessThan (שכר כפול 1, שכר כפול 2); }

4.5. תמיכה בביצוע פונקציות

יש לנו גם תמיכה בהערות - כדי לפשט את העבודה עם ביצוע פונקציות GemFire.

יש לטפל בשני חששות כאשר אנו משתמשים בפונקציות, היישום והביצוע.

בואו נראה כיצד ניתן לחשוף POJO כפונקציה GemFire ​​באמצעות הערות נתוני אביב:

@Component class class FunctionImpl {@GemfireFunction ברכת חלל ציבורית (הודעת מחרוזת) {// קצת היגיון} // ...}

עלינו להפעיל את עיבוד ההערות במפורש עבור @GemfireFunction לעבוד:

@Configuration @EnableGemfireFunctions מחלקה ציבורית GemfireConfiguration {// ...}

לצורך ביצוע פונקציה, תהליך הפעלת פונקציה מרחוק צריך לספק טיעוני קריאה, פונקציה תְעוּדַת זֶהוּת, יעד הביצוע (onServer, onRegion, onMember, וכו.):

@OnRegion (region = "עובד") ממשק ציבורי FunctionExecution {@FunctionId ("ברכה") ביצוע חלל ציבורי (הודעת מחרוזת); // ...}

כדי לאפשר את עיבוד ההערות לביצוע הפונקציות, עלינו להוסיף כדי להפעיל אותה באמצעות יכולות סריקת הרכיבים של Spring:

@Configuration @EnableGemfireFunctionExecutions (basePackages = "com.baeldung.spring.data.gemfire.function") GemfireConfiguration בכיתה ציבורית {// ...}

5. מסקנה

במאמר זה, בחנו את התכונות החיוניות של GemFire ​​ובדקנו כיצד ממשקי ה- API של Spring Data מספקים את זה קל לעבוד איתו.

הקוד השלם למאמר זה זמין באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found