رفتن به مطلب
مرورگر پیشنهادی آرساکیا گیم مرورگر های تحت موتور کرومیوم می‌باشد، برای دانلود روی مرورگر انتخابی خود کلیک کنید
Google Chrome Microsoft Edge Ungoogled Chromium Brave Opera GX Opera

Tarantool - Where Lua Developers Shine!


ارسال‌های توصیه شده

In the name of God

 

سلامممممممممممممممممممم می ارزم خدمت تمامیه دوستان و همراهان عزیز

امیدوارم حالتون GG باشه ( :D )

 

در این تاپیک, یکی از جذابترین مورد ها (مخصوصا برای عمو @Olden :D) رو مورد بررسی قرار میدیم

 

جایی که لوا دولوپر ها دوباره میدرخشن!

 

بله دوستان! تران تول (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 چه خبر از اسینکرونوس؟ :D) رایت میکنه, تران تول به صورت 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)) به سرور شما :D

 

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/
به اشتراک گذاری در سایت های دیگر

جالب بود خسته نباشی👌

10 ساعت قبل، Integer گفته است:

پیشنهاد میکنم حتما وقتی نت بینالمللی شد

به امید آزادی❤️

زنده ایم قسطی تو ایران

 

samcoder.png

 

%5B2%5Dsamcoder.png

لینک به دیدگاه
https://forum.arsacia.ir/topic/110531-tarantool-where-lua-developers-shine/#findComment-1145048
به اشتراک گذاری در سایت های دیگر

۱ ساعت قبل، samcoder گفته است:

جالب بود خسته نباشی👌

به امید آزادی❤️

ممنونم عمو ❤️

ایشالله

Just Programming

لینک به دیدگاه
https://forum.arsacia.ir/topic/110531-tarantool-where-lua-developers-shine/#findComment-1145153
به اشتراک گذاری در سایت های دیگر

1 ساعت قبل، kianosh00003424 گفته است:

مفید و جالب بود دمت گرم

ممنون ❤️ 

Just Programming

لینک به دیدگاه
https://forum.arsacia.ir/topic/110531-tarantool-where-lua-developers-shine/#findComment-1145668
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است!

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی، در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...