لینک کوتاه مطلب : https://hsgar.com/?p=3357

Redis v/s KeyDB v/s Dragonfly v/s Skytable. 5 برابر، 10 برابر و 25 برابر سریعتر است

به نظر می‌رسد که چندین پروژه ادعا می‌کنند که «سریع‌ترین فروشگاه کلید/ارزش جهان» را ساخته‌اند یا گاهی اوقات عبارت استفاده‌شده حتی ظالمانه‌تر است. پروژه های زیر مورد بحث است:

– Redis: https://github.com/redis/redis

– KeyDB: https://github.com/snapchat/keydb

– سنجاقک: https://github.com/dragonflydb/dragonfly

– Skytable: https://github.com/skytable/skytable

و، اینها نتایج معیار من هستند (30 رشته، 1 مشتری در هر رشته با GET/SET. برای راه اندازی به زیر مراجعه کنید):

1. Redis: 112,100 / 99,892

2. KeyDB: 288,931 / 282,997

3. سنجاقک: 408,322 / 392,446

4. Skytable: 619,992 / 676,091

# یادداشت

1. Redis: من با Redis شروع می‌کنم که می‌خواهم آن را فروشگاه کلید/مقدار «اصلی» (بعد از حافظه پنهان) بنامم، زیرا قدیمی‌ترین و پرکاربردترین از همه است. از آنجایی که مدت‌ها دنبال‌کننده Redis هستم، می‌دانم که آن را تک رشته‌ای می‌دانم (و از io-thread از نسخه ۶.۰ استفاده می‌کند) و از این رو نسبت به فروشگاه‌های دیگر فهرست‌شده در بالا که حداقل تا حدودی چند رشته‌ای هستند، توان عملیاتی کمتری دارد. بهترین قسمت‌ها در مورد Redis: این کامل‌ترین ویژگی در بین تمام سیستم‌های اینجاست و قدیمی‌ترین است. (نگفتن قدیمی لزوماً به معنای بهتر است).

2. KeyDB: دومی KeyDB است. IIRC، من آن را در یک پست وبلاگ دیدم که گفت که “چنگال چند رشته ای Redis است که 5 برابر سریعتر است”[1]. من این ایده را خیلی دوست داشتم زیرا قبلاً چندین نمونه از Redis را روی یک گره اجرا می کردم و آنها را مانند یک “خوشه تک گره” پروکسی می کردم. چرا؟ برای افزایش استفاده از CPU یک نمونه KeyDB می‌تواند جایگزین عملکرد ناخواسته پروکسی شود، بنابراین Redis را برای KeyDB کنار گذاشتم. تا به حال تجربه خوبی بوده است، به جز برخی از تصادفات گاه به گاه.

3. Dragonfly: به تازگی آن را در HN پیدا کردم و به نظر می رسد نسبتاً جدید باشد. Dragonfly ادعا می کند که 25 برابر سریعتر از Redis است (که من نتوانستم آن را تولید کنم)[2] و دارای شعار “احتمالاً، سریعترین فروشگاه حافظه در جهان!”. هنوز همه دستورات Redis را پشتیبانی نمی کند، اما به نظر من عمدتا به دلیل عملکرد جالب است. همچنین، خوب است بدانید چرا سریع‌تر است، زیرا به وضوح ساختار زیربنایی را مشخص می‌کند[2]. سه فروشگاه دیگر چیز زیادی در مورد آن نمی گویند. پروژه را دنبال خواهد کرد.

4. Skytable: هنگام جستجوی پروژه های نوشته شده در Rust، آن را پیدا کردم. ادعا می کند که “به طرز دیوانه کننده ای سریع است.” “معیارهای آزمایشی” Skytable ادعا می کند که چیزی حدود 10 برابر سریعتر از Redis و حدود 2X-3 برابر سریعتر از KeyDB است.[3]. من اسم Skytable را نشنیده بودم و به نظر نمی رسد که به طور گسترده ای مورد استفاده قرار گیرد (مگر اینکه چیزی را گم کرده باشم؟). به نظر من به دلیل ویژگی های برنامه ریزی شده جالب است[4] و عملکرد فقط Skytable به طور بومی بر روی ویندوز از چهار مورد اجرا می شود. پروژه را دنبال خواهد کرد.

5. افکار من: Redis نیازی به معرفی ندارد و مسلماً برای استفاده در سیستم های تولیدی فوق العاده پایدار است (به طور گسترده در سیستم های ما استفاده می شود). به نظر می رسد KeyDB “به اندازه کافی پایدار” است و به نظر می رسد برای تولیدکنندگان خوب باشد زیرا Snapchat قبلا از آن استفاده می کند.[5] (و ما هم همینطور!). من هیچ بنچمارک Dragonfly v/s Skytable پیدا نکردم. بهترین بخش در مورد Redis، KeyDB و Skytable این است که آنها هیچ “فرض دیوانه ای” در مورد سیستمی که روی آن اجرا می کنند نمی کنند. منظورم چیست؟

Dragonfly از شما انتظار دارد که آخرین سخت افزار را داشته باشید[6] و آخرین هسته[7] در تمام سرورهای شما به نظر من این ظالمانه است زیرا همه سرورها 5.10 را اجرا نمی کنند و اکثریت آنها هنوز از شاخه های طولانی مدت روی 4.x استفاده می کنند. همچنین، من انتظار ندارم که آنها آخرین پردازنده ها را داشته باشند. من می‌توانم استدلال کنم که اگر سه فروشگاه دیگر شروع به استفاده از آخرین ویژگی‌ها کنند، بسیار سریع‌تر از آنچه امروز هستند خواهند بود. در نهایت، Dragonfly و Skytable هر دو هنوز در مراحل اولیه توسعه خود هستند، بنابراین ممکن است منصفانه نباشد که ویژگی‌های آنها را با Redis و KeyDB که برای مدت طولانی‌تری وجود داشته‌اند، مقایسه کنیم. همچنین، همه پروژه‌های غیر از Skytable شرکت‌هایی پشت سر خود دارند (مگر اینکه چیزی را گم کرده باشم).

ویرایش شماره 1: من خودم معیارها را برای هر فروشگاه اجرا کرده ام. در معیار با Redis، KeyDB و Skytable (redis-benchmark، memtier و sky-bench): به نظر می‌رسد معیارهای Redis و KeyDB بسیار سازگار هستند، Skytable گاهی اوقات کمی ناسازگار است. با این حال، در بنچمارک با Redis، KeyDB و Dragonfly (با memtier)، من نتوانستم سرعت 25X را که Dragonfly ادعا می کند، تولید کنم. من تمام تست ها را روی دو سرور m5.4xlarge (یکی با فروشگاه k/v و دیگری با ابزار بنچمارک) اجرا کردم.

ویرایش شماره 2: نتایج معیار اضافه شد

نظر شما چیست؟ آیا سعی کرده اید هر یک از آنها را به صورت محلی یا در فضای ابری محک بزنید؟

منابع:

[1]: https://docs.keydb.dev/blog/2019/10/07/blog-post

[2]: https://github.com/dragonflydb/dragonfly

[3]: https://github.com/ohsayan/sky-benches

[4]: https://github.com/skytable/skytable/issues/203

[5]: https://docs.keydb.dev/news/2022/05/12/keydb-joins-snap

[6]: https://github.com/dragonflydb/dragonfly/issues/124

[7]: https://github.com/dragonflydb/dragonfly/issues/96

لینک منبع

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.