Gi-open-source sa Microsoft ang Garnet NoSQL system, nga gidisenyo para sa paghimo og mga caching store ug compatible sa mga kasamtangang client libraries para sa Redis storage. Gisuportahan sa Garnet ang paghimo og mga scalable cluster para sa data caching, nga makagamit og replication, key migration, ug data sharding tali sa mga cluster node. Ang proyekto gisulat sa C# nga adunay C++ storage engine, open-sourced ubos sa MIT license, ug makadagan sa tanang platform nga gisuportahan sa .NET (ang mga primary platform mao ang Linux и Windows).
Sa pagtipig sa datos, ang Tsavorite engine (usa ka tinidor sa Microsoft FASTER storage) gigamit, nga nagsuporta sa multi-threaded nga pagproseso sa pangutana, mga transaksyon, pag-ayo sa mga pagbag-o sa usa ka non-blocking mode (checkpointing), pagbawi gikan sa mga kapakyasan, pagtipig sa sobra nga mga kopya ug pagmintinar sa usa ka log sa mga operasyon. Ang network engine sa Garnet gitukod gamit ang shared memory architecture nga gisugyot sa ShadowFax research project. Ang pagproseso sa TLS ug interaksyon sa pagtipig gihimo sa usa ka hilo, nga nagpaposible nga malikayan ang overhead sa pagbalhin sa mga hilo ug labi ka episyente nga magamit ang cache sa CPU kung magbalhin mga datos sa network.
Ang arkitektura sa Garnet nagbulag sa lohika alang sa pag-parse ug pagproseso sa mga hangyo gikan sa mga operasyon sa pagtipig. Ang datos gitipigan gamit ang duha ka key-value store base sa Tsavorite library. Ang una nga "main" nga tindahan gi-optimize alang sa paspas nga mga operasyon sa string, ug ang ikaduha nga "butang" nga tindahan gi-optimize aron ma-accommodate ang mga komplikado nga butang ug mga advanced nga tipo sa datos sama sa mga hash ug mga lista. Ang mga tipo sa datos sa ikaduha nga pagtipig gipatuman gamit ang .NET nga mga librarya. Ang datos gitipigan sa tapok (C# heap), nga nagtugot niini nga ma-update nga episyente, ug sa serialized nga porma sa disk.

Mga Feature sa Garnet:
- Posible nga i-deploy ang multi-tiered storage, spanning RAM, SSD drives ug cloud storage, diin ang dili kaayo-in-demand nga data giduso ngadto sa hinay nga storage aron makahimo og mga cache nga mas dako pa kay sa RAM.
- Gipadako nga suporta sa aparato, nga gitugotan ang paghimo sa mga layer nga na-optimize aron magtrabaho sa lainlaing mga aparato, pananglitan, adunay mga layer alang sa SDD, mga hard drive ug pagtipig sa panganod sa Azure Storage.
- Usa ka episyente nga mekanismo alang sa paggamit pag-usab sa libre nga luna sa RAM, pagpugong sa pagkabahinbahin.
- Ma-configure nga mga limitasyon sa gidak-on sa memorya nga gigamit alang sa mga indeks, mga troso ug pagtipig sa butang.
- Ang RESP protocol gigamit sa pag-access sa storage, nga nagtugot sa Garnet nga gamiton sa wala mausab nga mga kliyente sa Redis.
- Nagsuporta sa pagtipig sa parehas nga mga kantidad sa string ug mga komplikado nga istruktura sa datos sama sa mga lista, hash, set, gisunud nga mga lista, ug data sa geolocation. Abilidad sa pagtino sa importante nga kinabuhi.
- Anaa sa mga API alang sa paghimo sa analytical nga mga pangutana (HLL/Hyperloglog, Bitmap), mga transaksyon (MULTI/EXEC) ug paggamit sa publish/subscribe paradigm.
- Anaa sa mga paagi alang sa flexible access control pinaagi sa ACL.
- Abilidad sa paghubit sa configuration sa JSON o redis.conf format.
- Suporta alang sa pagkonektar sa dugang nga mga tigdumala sa network. Abilidad sa pag-encrypt sa trapiko gamit ang TLS (base sa SslStream).
- Ang abilidad sa paghimo og mga extension sa C # nga nagpatuman sa dugang nga mga operasyon nga adunay mga string ug mga butang.
- Suporta alang sa transactional stored procedures nga naglangkob sa daghang mga yawe.
- Abilidad sa pagpasig-uli sa estado gikan sa usa ka kanhi naluwas nga posisyon (checkpoint-pagbawi). Ang presensya sa usa ka append-only file mode (AOF, append-only file), diin ang tanan nga daan nga datos nagpabilin nga magamit ug dili mapulihan.
- Suporta alang sa paghimo og storage cluster nga adunay replikasyon, sharding, dinamikong key migration tali sa mga node ug pagbawi sa mga napakyas nga node.
- Taas nga performance ug ubos nga latency kon mo-execute og mga query. Epektibo nga pagproseso sa gagmay nga batch query nga adunay daghang client sessions, nga nagtugot sa throughput (gidaghanon sa mga query nga giproseso kada segundo) nga mas taas kay sa mga kakompetensya nga solusyon. Kon modagan sa virtual nga mga makina Sa Azure cloud, ang client latency dili molapas sa 300 microseconds sa kadaghanang mga kaso. Sa mga pagsulay nga gihimo, ang Garnet milabaw pag-ayo sa Redis, Dragonfly, ug KeyDB sa performance ug responsiveness. Sa pipila ka mga pagsulay, ang Garnet milabaw pag-ayo sa mga kakompetensya nga sistema sa napulo ka pilo.




Source: opennet.ru




