Ua wehe ʻo Microsoft i ka ʻōnaehana Garnet NoSQL, i hoʻolālā ʻia no ka hana ʻana i nā hale kūʻai caching a kūlike me nā hale waihona puke o nā mea kūʻai aku no ka waihona Redis. Kākoʻo ʻo Garnet i ka hana ʻana o nā hui scalable no ka caching data, hiki ke hoʻohana i ka replication, key migration, a me ka data sharding ma waena o nā cluster nodes. Ua kākau ʻia ka papahana ma C# me kahi ʻenekini mālama C++, ua wehe ʻia ma lalo o ka laikini MIT, a hiki ke holo ma nā kahua āpau i kākoʻo ʻia e .NET (ʻo nā kahua mua Linux и Windows).
No ka mālama ʻana i ka ʻikepili, hoʻohana ʻia ka mīkini Tsavorite (kahi ʻāpana o ka waihona Microsoft FASTER), e kākoʻo ana i ka hoʻoili ʻana i nā nīnau nīnau lehulehu, nā kālepa, hoʻoponopono ʻana i nā loli i ke ʻano non-blocking mode (checkpointing), hoʻihoʻi mai nā hemahema, mālama i nā kope redundant a mālama i kahi log o nā hana. Kūkulu ʻia ka ʻenekini pūnaewele ma Garnet me ka hoʻohana ʻana i ka hana hoʻomanaʻo hoʻomanaʻo i manaʻo ʻia e ka papahana noiʻi ShadowFax. Hana ʻia ka hana TLS a me ka launa pū ʻana me ka waiho ʻana i hoʻokahi kaula, kahi e hiki ai ke pale aku i ka overhead o ka hoʻololi ʻana i nā kaula a ʻoi aku ka maikaʻi o ka hoʻohana ʻana i ka cache CPU i ka wā e hoʻoili ai i ka ʻikepili ma luna o ka pūnaewele.
Hoʻokaʻawale ka papa hana Garnet i ka loiloi no ka parsing a me ka hoʻoili ʻana i nā noi mai nā hana mālama. Mālama ʻia ka ʻikepili me ka hoʻohana ʻana i ʻelua hale kūʻai waiwai nui ma muli o ka waihona Tsavorite. ʻO ka hale kūʻai "nui" mua i hoʻopaʻa ʻia no ka hana wikiwiki, a ʻo ka lua o ka hale kūʻai "mea" i hoʻopaʻa ʻia e hoʻokipa i nā mea paʻakikī a me nā ʻano ʻikepili holomua e like me ka hashes a me nā papa inoa. Hoʻokō ʻia nā ʻano ʻikepili ma ka waihona lua me ka hoʻohana ʻana i nā hale waihona puke .NET. Mālama ʻia ka ʻikepili ma ka puʻu (C# heap), kahi e hiki ai ke hoʻonui maikaʻi ʻia, a ma ke ʻano serialized ma ka disk.

Nā hiʻohiʻona o Garnet:
- Hiki ke kau i ka waiho ʻana i nā ʻāpana he nui, ka nui o ka RAM, nā SSD drive a me ka mālama ʻana i ke ao, kahi e hoʻoneʻe ʻia ai ka ʻikepili liʻiliʻi-i-koi i loko o ka mālama lohi e hana i nā cache ʻoi aku ka nui ma mua o RAM.
- Kākoʻo mea hoʻonui, e ʻae ana i ka hana ʻana i nā papa i hoʻopaʻa ʻia e hana me nā mea like ʻole, no ka laʻana, aia nā papa no SDD, nā paʻa paʻa a me ka mālama ʻana i ke ao Azure Storage.
- ʻO kahi hana kūpono no ka hoʻohana hou ʻana i ka wahi i hoʻokuʻu ʻia i ka RAM, e pale ana i ka ʻāpana.
- ʻO nā palena hiki ke hoʻonohonoho ʻia i ka nui o ka hoʻomanaʻo i hoʻohana ʻia no nā indexes, logs a me kahi waiho mea.
- Hoʻohana ʻia ka protocol RESP no ke komo ʻana i ka waihona, kahi e hiki ai iā Garnet ke hoʻohana me nā mea kūʻai aku Redis i hoʻololi ʻole ʻia.
- Kākoʻo i ka mālama ʻana i nā waiwai string a me nā hoʻolālā ʻikepili paʻakikī e like me nā papa inoa, hashes, sets, sorted lists, a me geolocation data. Hiki ke hoʻoholo i ke ola o kahi kī.
- Loaʻa i nā API no ka hoʻokō ʻana i nā nīnau noiʻi (HLL/Hyperloglog, Bitmap), nā kālepa (MULTI/EXEC) a me ka hoʻohana ʻana i ka paradigm hoʻopuka / kākau inoa.
- Loaʻa i nā ala no ka mana hiki ke hoʻololi ma o ACL.
- Hiki ke wehewehe i ka hoʻonohonoho ʻana ma JSON a i ʻole redis.conf format.
- Kākoʻo no ka hoʻohui ʻana i nā mea lawelawe pūnaewele. Ka hiki ke hoʻopili i nā kaʻa me ka hoʻohana ʻana iā TLS (ma muli o SslStream).
- ʻO ka hiki ke hana i nā hoʻonui i C # e hoʻokō i nā hana hou me nā kaula a me nā mea.
- Kākoʻo no nā kaʻina hana i mālama ʻia e pili ana i nā kī he nui.
- Hiki ke hoʻihoʻi i ka mokuʻāina mai kahi kūlana i mālama ʻia (checkpoint-recovery). ʻO ka loaʻa ʻana o kahi mode file append-only (AOF, append-only file), kahi i loaʻa ai nā ʻikepili kahiko āpau a ʻaʻole i pani ʻia.
- Kākoʻo no ka hana ʻana i kahi puʻupuʻu waihona me ka replication, sharding, dynamic key migration between nodes and recovery of failed nodes.
- Hana kiʻekiʻe a me ka latency haʻahaʻa i ka wā e hoʻokō ai i nā nīnau. Hana pono ʻana i nā nīnau pūʻulu liʻiliʻi me ka nui o nā hālāwai o ka mea kūʻai aku, e ʻae ana i ka throughput (ka helu o nā nīnau i hana ʻia i kēlā me kēia kekona) i kahi kauoha o ka nui ma mua o nā hoʻonā hoʻokūkū. Ke holo nei i loko nā mīkini uila Ma ke ao Azure, ʻaʻole ʻoi aku ka latency o ka mea kūʻai aku ma mua o 300 microseconds i ka hapa nui o nā hihia. Ma nā hoʻokolohua i hana ʻia, ʻoi aku ka maikaʻi o Garnet ma mua o Redis, Dragonfly, a me KeyDB i ka hana a me ka pane ʻana. Ma kekahi mau hoʻokolohua, ʻoi aku ka maikaʻi o Garnet ma mua o nā ʻōnaehana hoʻokūkū ma kahi o ʻumi.




Source: opennet.ru




