﷽ | راه ما راه امام حسین علیه السلام است

این سایت به روز میشود با محتوایی ماندگار و در خور انسان ها

﷽ | راه ما راه امام حسین علیه السلام است

این سایت به روز میشود با محتوایی ماندگار و در خور انسان ها

﷽ | راه ما راه امام حسین علیه السلام است
طبقه بندی موضوعی

۱ مطلب با کلمه‌ی کلیدی «ELK Stack» ثبت شده است

در قسمت قبل مطلبی تحت عنوان آشنایی با پلتفرم جامع و کامل Elasticsearch و متعلقات آن نوشتم، بدلیل اینکه برخود اولم بود اشتباهاتی را در مفاهیم آن را داشتم، و بنا دارم یک بار دیگر آن را معرفی کنم!

اِلَستیک چیست !؟

الستیک بر مبنای یک سیستم مدرن (بر پایه جاوا) که میتوان آنرا یک ODM نیز محسوب کرد و بر اساس یک سیستم توزیع شده (distributed infrastructure) بشمار آورد که توسعه یافته ( و دارای قابلیت های Shard و Replica و Clustering است) و میتوان آنرا بهترین ابزار جست و جو که بر مبنای Lucene میباشد دانست (شبیه به Solr) بلکه نه فقط بعنوان یک پلتفرمی برای جست ­وجو و تجزیه ­و تحلیل (search engineای که با هدف Indexگذاری و ارائه آمار و گزارش در لحظه است) بلکه به عنوان یک پایگاه داده ازنوع سندگرا (doc db) که بسیار شبیه به دیتابیس مانگودی­بی است دانست. شاید یک تعریف ساده از الستیک ابزاری­ست برای  Query زدن بر روی کلمات!

ویژگی های الستیک:

·        Open Source میباشد

·        پشتیبانی و استفاده آسان از Full Text و انجام جست­جوهای قدرتمند (Powerful Search)

·        پشتیبانی از Rest API (JSON برمبنای HTTP)

·        پشتیبانی از جست و جو و تجزیه وتحلیل در لحظه (Real-time Search)

·        پشتیبانی از Multi Tenancy (چند مستاجری)

·        پشتیبانی از محیط های Cloud و کلان­داده (Big Data)

·        پشتیبانی از چندین پلتفرم­ سیستم عامل (لینوکس، ویندوز، مک)

·        و دیگر ویژگی آن Denormalized NoSQL Data Sore میباشد! بنوعی ذخیره ­سازی دردیتابیس­ های نواس­کیوال­ی که از حالت عادی خارج شده.

مزایای الستیک:

·        از جمله مزایا مجددا Open Source بودن آن است

·        بسیار سبک است حتی بهمراه REST API

·        دارای قابلیت HA (High Availability) و مقیاس پذیری Horizontal (Highly Scalable)

·        قابلیت Cache کردن داده های (Caching Data)

·        قابلیت Schema Free

·        دارای عملکرد و کارایی (Performance) جستجوی سریع

·        پشتیبانی از داده ­های ساختاریافته both Structured و داده­های ساختارنیافته (UN-Structured)

·        پشتیبانی از Distributed, Sharding, Replication, Clustering در معماری های (Architecture) چندگانه

·        پشتیبانی از حجم زیادی Operationها

·        ساخت انواع نموارها و داشبوردها در هر زمان

اشکالات و محدودیت های الستیک:

·        پشتیبانی نکردن از Operationهای MapReduce 

·        شاید نتوان آن را بعنوان یک پایگاه داده دائمی و اصلی استفاده کرد!

·        پشتیبانی نکردن از استاندارد ACID

·        پشتیبانی نکردن از Transactions و Transactionsهای توزیع شده (Distributed Transactions)

·        و نداشتن قابلیت پیشفرض built-in برای محدودیت هایی همانندauthentication   (احراز هویت) وauthorization  (سطح دسترسی)

 

 

الستیک هست :

·        یک موتور جستجوی Full-Text

·        یک موتور پرس­ وجو (query engine) برای بسیاری از data typeهای مختلف که بر روی فیلدها دلخواه و اختیاری میباشند

·        یک موتور تجزیه­وتحلیل برای بدست آوردن بینش و درون­بینی داده­ها

·        یک سندگرای (Document-oriented databaseIndexگذاری شده برای داده­های ساختاریافته و ساختارنیافته

·        توزیع شده و مقیاس پذیر

·        دارای Replicated, Highly Available, Partition Tolerant, Eventually Consistent

·        یک سیستم توزیع شده با توانایی تک-سروره­ی (single-server) موتور جستجوی Lucene که به نمایش و استفاده میکند JSON REST API

·        Elastic Stack شامل قسمت­هایی میباشد همانند Elasticsearch و Logstash و Kibana و Beats و ..

·        و این پروژه تحت مجوز آپاچی (Apache-License) و تحت جاوا نوشته و توسعه داده شده است.

از الستیک میتوانید:

·        انجام جستوهای قدرتمند full-text

·        ساخت سریع Queryهای Ad-hoc (تک-کاره) در هر فیلد

·        مقیاس­ پذیری horizontally (بصورت افقی) که در مبحث Database Scalability مقرون بصرفه­ ست; در Cloud مقیاس ­پذیرهای افقی بصورت native و locally انجام میشود .

·        حل کردن Queryهای تجمیع شده برای تحلیل و بررسی داده­ها

·        بررسی و رسیدگی کارآمدِ داده­های سری زمانی (time-series) که برای یک دوره نگهداری میشوند

·        فراهم ساختن مدل انعطاف­ پذیری از داده­ها که میتواند مقبول فیلدهای جدید بصورت پویا (dynamically) باشند

·        فراهم کردن HA یا high-availability بواسطه رونوشت ­برداری از داده­ها (data replication)

·        متوازن سازی داده­ها بصورت خودکار، زمانی که Nodeها می­آیند و می­روند (و یا بعبارتی هستند یا نیستد!)

·        ارائه و عرضه ثبات (stability) از اطلاعات کلاسترها بوسیله انجام و اقدامی دو مرحله­ای (two-phase)

·        ساخت بک­ آپ­های استوار و مستحکم بوسیله Snapshots (گرچه Snapshots راهکار پشتیبان­ گیری نیست!)

·        اجازه مبادلاتی تنظیم ­پذیر مابین CAP یا Consistency, Availability, Partition-Tolerance

·        .فعال­سازی و فراهم کردن multi-tenancy و یا چند مستاجری - data-separation (جداسازی داده­ها) از طریق Indexگذاری یک tenant خاص (tenant-specific indexes)، این اقدام با هزاران Index در هر کلاستر به خوبی انجام میشود

واژگان و اصطلاحات الستیک:

·        Node یک Instance در نرم­ افزار elasticsearch می­باشد، وقتی که در یک ماشین مستقل اجرا شده است.

·        کلاستر  Cluster مجموعه­ای از Nodeهایی هستند  که در ضمن همکاری و اشتراک­گذاری منابع در انتها، با یک نام شناخته و اجرا میشوند

·        Document نایب­ی (نمایندهای) از application object expressedدر JSON است، و معادل Row در دیتابیس (Express application object می­تواند ارجاعی از request object و response object باشد )

·        Document Field بخشی از داده (data) در Document است که میتواند بصورت یک Query مستقل نیز اجرا شود، و معادل آن در دیتابیس column است

·        Index مجموعه­ای از Documentها هستند که میتواند Query هم باشد، معادل آن در دیتابیس بعنوان مثال داشتن Tableهای متعدد (یا چندگانه - multiple) است.

·        تعریف مصطلح از Shard اینگونه است (A shard is a lucene inverted index) ولی مفهوم اصلی میشود: Index بطور بالقوه میتواند مقدار زیادی از داده­ها را وقتی با محدودیت­های سخت ­افزاری در یک Node مواجه هستید ذخیره کند. برای مثال، یک index بتنهایی میتواند شامل بیلیون­ها سند (document) باشد و فضای زیادی از یک Node را اشغال کند که اساساً نه مناسب است و یا ممکن است برای درخواست­های یک single-node ازسمت­ سرور (server search requests) بسی آهسته عمل کند

برای حل این مشکل، elasticsearch بستری فراهم میکند که توانایی تقسیم کردن indexها به تکه (قطعه)های متعدد را دارد که آنها را Shard می­نامد، هنگامی که شما یک index ایجاد میکنید بسادگی هرتعداد که میخواهید shard نیز معرفی کنید، هر shard بخودی خود کاملا کاربردی (fully-functional) عمل میکند و مستقل از index کار میکند و میتواند میزبانی هر Node را نیزعهده­دار باشد .

Sharding به دو دلیل اصلی مهم است:

-  وقتیکه بصورت افقی (horizontally) قصد افزایش مقیاس (scale) / تقسیم­بندی (split) داشته باشیم .

-  بشما اجازه عملیات (بهره­برداری) در میان operationهای توزیع­شده (distribute) و موازی (parallelize)، shard میدهد (بطور بالقوه در چندین Node) که در نتیجه افزایش کارایی (performance) و توان عملیاتی (throughput) را میدهد .

Shard را میتوان یک پارتیشن ایندکس شده در elasticsearch نامید، که برای replicate و distribute داخل اسناد (document)ها استفاده میشود، ذکر این نکته مهم است که sharding از دید برنامه­نویس پنهان میباشد .

·        Mapping یک scheme در اسناد (document) است، که شبیه جداول رابطه­ای­ست .

·        Document Type مجموعه­ای از اسناد (document)ست که ازطریق mapping به اشتراک گذاشته شده

·        Field Type همانند datatypeها هستند، مانند: text, keyword, integer, date, ip address و غیره ...

 

ان شا الله ادامه دارد .