Integer ارسال شده در March 28 اشتراک گذاری ارسال شده در March 28 In the name of God سلامممممممممممممممممممم می ارزم خدمت تمامیه دوستان و همراهان عزیز امیدوارم حالتون GG باشه ( ) در این تاپیک, یکی از جذابترین مورد ها (مخصوصا برای عمو @Olden ) رو مورد بررسی قرار میدیم جایی که لوا دولوپر ها دوباره میدرخشن! بله دوستان! تران تول (Tarantool) اما تران تول (یا طول یا هرچی) چیه؟ تران تول یک دیتابیس هستش, یک دیتابیس فوق العاده پیشرفته اما کمتر شناخته شده Tarantool یکی از فوق العاده ترین دیتابیس هایی هستش (که به شخصه خودم دیدم!) اما خب دیگه مقدمه چینی نمیکنم (ژاپنی میکنم...) میریم سراغ اصل مطلب! ۱- تران تول چیه؟ تران تول (Tarantool) یک دیتابیس هیبرید SQL و In-Memory (NoSQL) هستش تران تول, برخلاف دیتابیس های سنتی مثل MySQL, MariaDB (که دوباره MySQL عه), PostgreSQL, و حتی NoSQL ها مثل Redis, Memcached, MongoDB, Cassandra, CouchDB, و... که فقط با یک روش شما میتونید باهاشون کار کنید (یا SQL, یا روش اختصاصی بر اساس مدل NoSQL اش (In-Memory, Document, و...)), شما میتونید از تران تول به دو شیوه ی Lua-based و SQL-based استفاده کنید! SQL-based که خیلی سادست: SELECT pUsername FROM `users` WHERE id = 23522 و خروجی بده بهتون: Integer اما با لوا! اینجاست که قدرت تران تول میدرخشه اول بزارید بهتون خود تران تول و زیرساختش رو توضیح بدم اما شاید براتون سوال پیش بیاد چرا اینقدر سریعه؟ (درجا!) حافظه (In-Memory) تران تول یکی از مباحث مهمش NoSQL بودنشه از نوعه In-Memory یعنی داده ها توی رمتون ذخیره میشه! درست شنیدید, روی دیسک نه, توی رم! رم به شما اجازه میده دسترسی نانوثانیه ای به داده ها داشته باشید (NVMe های نسل پنجم توسط Micron هنوز به این چیز نرسیدن!) برخلاف Redis و بقیه دیتابیس های In-Memory که گاها Asyncronous ( @MohammadAli چه خبر از اسینکرونوس؟ ) رایت میکنه, تران تول به صورت WAL (Write Ahead Log) مینویسه یعنی تا درخواست میاد, درجا مینویسه به جای اینکه وایسه تا چندین درخواست بیاد بعد بنویسه این موضوع Fault-Tolerance رو بالا و میزان بک آپ گیریتون رو به صفر تقریبا نزدیک میکنه! چون هیچ داده ای از دست نمیره و محول نمیشه به مثلا ۱۰ ثانیه بعد! درجا نوشته میشه اما یه مورد دیگش, سیستم Fibers هستش فیبر چیه؟ فیبر یک ریزریسمان (Sub-Thread یا Lightweight Thread) هستش که در فضای کاربری (User Space) هستن مثل گرین ترد ها (Green Threads) برخلاف Javascript یا حتی Python و اینا که از Thread/Process استفاده میکنن هزینه ی جابجایی هم بین فیبر ها خیلی کمه (در تران تول, ۵ نانوثانیه), تازه منابع ی کمی هم میخوان, و مورد اصلیتر اینه که تران تول میتونه هزاران و میلیون ها (که به میلیون هیچوقت نمیرسه اینقدر سریع ریسپانس میدن! LOL) فیبر رو مدیریت کنه و Concurrency عظیمی ایجاد کنه در برنامه ی شما اما خب تا اینجا تموم نمیشه زیرساخت چیز مهمیه! و تران تول, زیرساخت قوی ای داره! مورد بعدی سریع بودنش, LuaJIT هستش بله! همون کامپایلر JIT زبان برنامه نویسی Lua LuaJIT یکی از سریعترین کامپایلر ها و موتور اسکریپت نویسی هستش (در حال رقابت با C که چه عرض کنم با Hardware دارن Race Condition میدن ) تران تول چند مبحث مهم داره: اولین مبحث, بحث مدل داده ای تران تول هستش که یکم عجیب اما تمیز و قدرتمنده Space: معادل: Table Space ها توی تران تول مثل همون Table ها توی دیتابیس MySQL اتون هستن! Tuples: معادل: Rows Tuple ها همون Row ها (ستون ها, مثلا ستون ID, ستون pName و...) هستن Indexs: معادل: Indexes خب بدیهیا ایندکس رو همه کسایی که MySQL کار کردن میدونن چیه ایندکس میکنیم برای جستوجوی سریعتر در Space ها که خودشون انواع مختلفی دارن (Tree, Hash, BitSet, RTree و....) زبان برنامه نویسی (لوا) لوا قلب تپنده ی تران تول هستش شما میتونید منطق تجاری + دیتابیس رو باهم بنویسید! پشم ریزون نیست؟ برخلاف MySQL که دیتابیس یه طرف, JavaScript/Python/PHP یه طرف پایداری و پشتیبانی گیری (Persistence): داده ها توی Tarantool فقط توی رم نیستن, در همه جا که میشه ذخیره کرد هستن! Write Ahead Log (WAL): داده ها و تغییرات (INSERT, UPDATE و DELETE) بلافاصله توی یه .xlog ذخیره میشه تران تول هر موقع ببینه Log جلوتر از (Ahead of) دیتابیس هستش, درجا تغییرات رو اعمال میکنه! Snapshots: اسنپ شات ها همون فایل های بک آپ هستن که توی .snap ذخیره میشن به صورت دوره ای (مثلا هر ۶۰ ثانیه) توسط تران تول گرفته میشن و گذاشته میشن کلاسترینگ & شاردینگ (Clustering & Sharding): کلاسترینگ و شاردینگ توی DevOps موضوع بحث برانگیزی هستن چون مثلا مایکروسافت یه سرور نداره که یهو صد تا دیتاسنتر (که خوده دیتاسنتر ها شامله صد ها سرور میشن) دارن توی کشور ها و مناطق مختلف پس بدیهیا یه سرور که نمیتونه از پس همه چیز بر بیاد اینجاست که تران تول برتری واقعی داره به Redis & Memcached و خیلی از دیتابیس های دیگه! Replication (تکثیر): میتونید چندین کپی از دیتابیس رو داشته باشید (یکی Master, بقیه Replica) اگه Master خراب شد, یکی از Replica ها جایگزین میشن (High Availability) VShard (Vertical Sharding): تکه تکه ایه افقی (Vertical Sharding) یکی از جدیدترین ماژول های رسمی تیم تران تول هستش برای Sharding & Clustering داده ها بر اساس Bucket ID بین سرور ها پخش میشن برنامه شما نیازی نداره بدونه توی کدوم سروره VShard به صورت خودکار درخواست رو به سرور مربوطه ارسال میکنه! پروتکل ارتباطی (Connectors): شما میتونید برای ارو دوستان تباط با تران تول از هر زبانی استفاده کنید: Connectors رسمی: PHP, Golang, Java, Python, C++, C#, Perl و... پروتکل: از عیسی (پروتکل باینری اختصاصی تران تول (IPROTO)) به سرور شما SQL عه Tarantool: از نسخه 2.0 به بعد Tarantool, تران تول به صورت کامل از SQL پشتیبانی میکنه! میتونید با دستورای استاندارد SQL (CRUD, JOIN, Transforming و...) کار کنید این ویژگیش بود که تونستم خیلی راحت سایت خودمو از MySQL به Tarantool بیارم! و دوستان این هم شد آخر مطلب خلاصه ی مطلب اینه که: اگه سرعت بالا میخواید (Read & Write (WAL)) راحتی میخواید (Lua) امنیت میخواید (VShard & ACID) بک آپ دستی نمیخواید (WAL) از دیتابیس های Disk-Based RDBMS (مثل MySQL, PostgreSQL, MariaDB و...) خسته شدید از محدودیت های Redis و سادگی تحمیلی (که بازم باعث محدودیت میشه) توسط Memcached خسته شدید پیشنهاد میکنم حتما وقتی نت بینالمللی شد یه نگاه به داکیومنشن های تران تول در گیت هاب بندازید پشیمون نمیشید امیدوارم لذت برده باشید از دوستان دعوت میکنم که نظرات خودشون, پیشنهاداتشون و انتقداتشون و صحبت هاشون رو به صورت کاملا آزاد بگن امیدوارم شب و روز بر همتون خوش باشه! خدانگهدارتون! مخفی کننده دعوت ویژه به: @Olden @Carl @samcoder @AmirMahdi @Mohny @Toofan @WhiteCollar @Ali @Slap @Neverlose و بقیه دوستان علاقه مند 1 2 Just Programming لینک به دیدگاه https://forum.arsacia.ir/topic/110531-tarantool-where-lua-developers-shine/ به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
samcoder ارسال شده در March 28 اشتراک گذاری ارسال شده در March 28 جالب بود خسته نباشی👌 10 ساعت قبل، Integer گفته است: پیشنهاد میکنم حتما وقتی نت بینالمللی شد به امید آزادی❤️ زنده ایم قسطی تو ایران لینک به دیدگاه https://forum.arsacia.ir/topic/110531-tarantool-where-lua-developers-shine/#findComment-1145048 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
Integer ارسال شده در March 28 سازنده اشتراک گذاری ارسال شده در March 28 ۱ ساعت قبل، samcoder گفته است: جالب بود خسته نباشی👌 به امید آزادی❤️ ممنونم عمو ❤️ ایشالله Just Programming لینک به دیدگاه https://forum.arsacia.ir/topic/110531-tarantool-where-lua-developers-shine/#findComment-1145153 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
kianosh00003424 ارسال شده در March 28 اشتراک گذاری ارسال شده در March 28 مفید و جالب بود دمت گرم لینک به دیدگاه https://forum.arsacia.ir/topic/110531-tarantool-where-lua-developers-shine/#findComment-1145507 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
Integer ارسال شده در March 28 سازنده اشتراک گذاری ارسال شده در March 28 1 ساعت قبل، kianosh00003424 گفته است: مفید و جالب بود دمت گرم ممنون ❤️ Just Programming لینک به دیدگاه https://forum.arsacia.ir/topic/110531-tarantool-where-lua-developers-shine/#findComment-1145668 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
ارسالهای توصیه شده
برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید
برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید
ایجاد یک حساب کاربری
برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است!
ثبت نام یک حساب کاربری جدیدورود به حساب کاربری
دارای حساب کاربری هستید؟ از اینجا وارد شوید
ورود به حساب کاربری