Microsoft, keşləmə anbarları yaratmaq üçün hazırlanmış və Redis yaddaşı üçün mövcud müştəri kitabxanaları ilə uyğun olan Garnet NoSQL sistemini açıq mənbəli olaraq təqdim etmişdir. Garnet, klaster qovşaqları arasında replikasiya, açar miqrasiyası və məlumatların paylaşılmasından istifadə edə bilən məlumatların keşlənməsi üçün miqyaslana bilən klasterlərin yaradılmasını dəstəkləyir. Layihə C# dilində C++ yaddaş mühərriki ilə yazılıb, MIT lisenziyası altında açıq mənbəlidir və .NET tərəfindən dəstəklənən bütün platformalarda işləyə bilər (əsas platformalar... Linux и Windows).
Məlumatların saxlanması üçün Tsavorite mühərrikindən (Microsoft FASTER yaddaş çəngəlindən) istifadə olunur ki, bu da çox yivli sorğuların işlənməsini, əməliyyatları, bloklanmayan rejimdə dəyişiklikləri düzəltməyi (yoxlama nöqtəsi), nasazlıqların aradan qaldırılmasını, lazımsız nüsxələrin saxlanmasını və saxlanmasını dəstəkləyir. əməliyyatlar jurnalı. Garnet-də şəbəkə mühərriki ShadowFax tədqiqat layihəsi tərəfindən təklif olunan paylaşılan yaddaş arxitekturasından istifadə etməklə qurulub. TLS emalı və saxlama ilə qarşılıqlı əlaqə bir ipdə həyata keçirilir ki, bu da kommutasiya iplərinin yükündən qaçmağa və məlumatların şəbəkə üzərindən ötürülməsi zamanı CPU keşindən daha səmərəli istifadə etməyə imkan verir.
Garnet arxitekturası sorğuların təhlili və işlənməsi üçün məntiqi saxlama əməliyyatlarından ayırır. Məlumat Tsavorite kitabxanasına əsaslanan iki açar-dəyər anbarından istifadə etməklə saxlanılır. Birinci "əsas" mağaza sürətli sətir əməliyyatları üçün optimallaşdırılıb, ikinci "obyekt" anbarı isə mürəkkəb obyektləri və hash və siyahılar kimi təkmil məlumat növlərini yerləşdirmək üçün optimallaşdırılıb. İkinci yaddaşdakı məlumat növləri .NET kitabxanalarından istifadə etməklə həyata keçirilir. Məlumat yığında (C# yığınında) saxlanılır ki, bu da onu səmərəli şəkildə yeniləməyə imkan verir və diskdə seriallaşdırılmış formadadır.

Garnet xüsusiyyətləri:
- RAM, SSD diskləri və bulud yaddaşını əhatə edən çox səviyyəli saxlama yerləşdirmək mümkündür, burada daha az tələb olunan məlumat RAM-dan daha böyük keşlər yaratmaq üçün yavaş yaddaşa köçürülür.
- Müxtəlif cihazlarla işləmək üçün optimallaşdırılmış təbəqələrin yaradılmasına imkan verən genişləndirilə bilən cihaz dəstəyi, məsələn, SDD, sərt disklər və Azure Storage bulud yaddaşı üçün təbəqələr var.
- RAM-da boş yerdən təkrar istifadə etmək, parçalanmanın qarşısını almaq üçün səmərəli mexanizm.
- İndekslər, qeydlər və obyektlərin saxlanması üçün istifadə olunan yaddaşın ölçüsünə dair konfiqurasiya edilə bilən məhdudiyyətlər.
- RESP protokolu Garnet-in dəyişdirilməmiş Redis müştəriləri ilə istifadə edilməsinə imkan verən yaddaşa daxil olmaq üçün istifadə olunur.
- Həm sətir dəyərlərinin, həm də siyahılar, hashlər, dəstlər, çeşidlənmiş siyahılar və geolokasiya məlumatları kimi mürəkkəb məlumat strukturlarının saxlanmasını dəstəkləyir. Əsas ömür müddətini təyin etmək bacarığı.
- Analitik sorğuların (HLL/Hyperloglog, Bitmap), əməliyyatların (MULTI/EXEC) yerinə yetirilməsi və dərc/abunə paradiqmasından istifadə üçün API-lərin mövcudluğu.
- ACL vasitəsilə çevik giriş nəzarəti üçün vasitələrin mövcudluğu.
- JSON və ya redis.conf formatında konfiqurasiya müəyyən etmək imkanı.
- Əlavə şəbəkə işləyicilərinin qoşulması üçün dəstək. TLS istifadə edərək trafiki şifrələmək imkanı (SslStream əsasında).
- C# dilində sətirlər və obyektlərlə əlavə əməliyyatlar həyata keçirən genişləndirmələr yaratmaq imkanı.
- Çoxlu açarları əhatə edən əməliyyat saxlanılan prosedurlara dəstək.
- Əvvəllər saxlanmış mövqedən vəziyyəti bərpa etmək imkanı (yoxlama nöqtəsi-bərpa). Bütün köhnə məlumatların mövcud olduğu və dəyişdirilməyən yalnız əlavə fayl rejiminin (AOF, yalnız əlavə fayl) olması.
- Replikasiya, parçalanma, qovşaqlar arasında dinamik açar miqrasiyası və uğursuz qovşaqların bərpası ilə yaddaş klasterinin yaradılmasına dəstək.
- Sorğuların icrası zamanı yüksək performans və aşağı gecikmə. Kiçik toplu sorğuların çox sayda müştəri sessiyası ilə səmərəli işlənməsi, rəqib həllərdən xeyli yüksək ötürmə qabiliyyətinə (saniyədə işlənən sorğuların sayı) imkan verir. İşlədildikdə virtual maşınlar Azure buludunda müştəri gecikməsi əksər hallarda 300 mikrosaniyədəni keçmir. Aparılan testlərdə Garnet performans və cavabdehlik baxımından Redis, Dragonfly və KeyDB-ni əhəmiyyətli dərəcədə üstələyir. Bəzi testlərdə Garnet rəqib sistemləri on dəfə üstələyir.




Mənbə: opennet.ru




