آموزش ديتابيس مونگو و الستيك سرچ- MongoDB & Elasticsearch tutorial
240 subscribers
18 photos
به صورت كاربردي نحوه كار و استفاده از MongoDb و Elasticsearch رو ياد خواهيد گرفت.

No-SQL
MongoDB
Elasticsearch


ارتباط با من:

@RzaMlk7
Download Telegram
Capped Collection

🔹نوعی کالکشن با سایز ثابت (fixed-size) می باشند که برای انجام عملیات خواندن و درج داده ها با throughput بالا مناسب می باشند.

🔹این نوع collection ها مانند circular buffer عمل می کنند. به این معنی که زمانی که فضای کالکشن پر شد، داکیونت جدید در آن بر روی قدیمی ترین داکیومنت overwrite می شود.

🔹امکان حذف یک یا بخشی از داکیونت ها از آن وجود ندارد. تنها می توان با استفاده از تابع ()drop تمام داکیومنت ها را حذف نمود.

🔹امکان sharding بر روی آن وجود ندارد.

🔹نحوه ايجاد

db.createCollection( "test_capped", { capped: true, size: 100000 } )

🔹در آینده در مورد دیگر ويژگي های آن و use case های مناسب جهت استفاده از آن با توجه به آشنا شدن با مفاهیم پیشرفته صحبت خواهیم نمود.
👇
قابلیت TTL در دیتابیس Mongo

🔹احتمالا در مواردی با این نیازمندی مواجه شده ايد كه داده هایی که دیگر در دیتابیس به آن ها نیاز نمی باشد و به معنی دیگر Expire شده اند پس از گذشت زمانی حذف شوند.

🔹با استفاده از پیکربندی TTL ( اختصار یافته Time To Live)در ديتابيس مونگو، می توان به صورت اتوماتیک داده هایی که Expire شده اند را از دیتابیس حذف نمود. این قابلیت با استفاده از TTL Index در دیتابیس مونگو پیاده سازی می شود.
🛃 آزمون
بر روي كدام نوع كالكشن مي توان TTL Index تعريف نمود؟
Anonymous Quiz
21%
Normal Collection
26%
Capped Collection
53%
هر دو
تفاوت دستور InsertOne و InsertMany

با استفاده از دستور InsertOne مي توان تنها يك داكيومنت را به كالكشن مورد نظر اضافه نمود، اما با استفاده از دستور InsertMany، همزمان مي توان چندين داكيومنت را به كالكشن اضافه نمود.
👇
🔹db.student.insertOne({name: "Ali",age: 27, marks: 85})

🔹db.student.insertMany([
{name: "Ali", age: 27, marks: 85},
{name: "Pedram", age: 24, marks: 75},
{name: "sara", age: 22, marks: 80}
])
Bulk Wrire

🔹در ديتابيس مونگو اين قابليت وجود دارد تا با استفاده از دستور bulkWrite, چندين عمليات مختلف نظير اينسرت، آپديت ، حذف داده و … را بر روي يك كالكشن فراخواني نمود.

🔹با استفاده از مقدار دهي متغير ordered در اين كامند، مي توان مشخص نمود كه دستورات به ترتيب اجرا شوند ياخير. در صورت مقداردهي false, پرفورمنس بسيار مناسبي در استفاده از اين عملگر براي انجام عمليات batch خواهيم داشت.

🔹از ديگر مزاياي استفاده از اين دستور:
كاهش round trip( رفت و برگشت) بين اپليكيشن و ديتابيس و
كاهش latency لايه network بين ديتابيس و اپليكيشن مي باشد.
👇
مقدار objectid در يك
داكيومنت ديتابيس مونگو
👇
🔹 در ديتابيس مونگو، هر داكيومنت ذخيره شده در يك كالكشن، مي بايست داراي يك فيلد يونيك به نام _id به عنوان primary key باشد.

🔹در صورت اينكه براي داكيومنت insert شده اين مقدار مشخص نشده باشد، انجين ديتابيس مونگو به صورت اتوماتيك objectid را جهت مقدار دهي اين فيلد توليد مي كند.

🔹 مقدار objectid به صورت يونيك، با سايز ١٢ بايت مي باشد كه به صورت ordered بر روي يك كالكشن توليد مي شود.

- ٤ بايت اولtimestamp و بيانگر
زمان ايجاد مي باشد.
- ٥ بايت بعدي به صورت تصادفي ايجاد مي شود.
- ٣ بايت آخر يك شمارنده به صورت افزايشي مي باشد.
👇
🔹ماكزيمم سايز يك داكيومنت BSON در ديتابيس مونگو برابر 16 مگابايت مي باشد.
🛃 آزمون
آيا در ديتابيس مونگو مي توان داده اي با سايز بيشتر از 16 مگابايت ذخيره نمود؟
Anonymous Quiz
49%
بله
51%
خير
GridFs

🔹در ديتابيس مونگو جهت ذخيره سازي داده ها با سايز بالاتر 16 مگابايت، از GridFs استفاده مي شود

🔹 با استفاده از GridFs, فايل به chunk هايي با سايز 255 كيلوبايت تقسيم مي شود.

🔹 از دو كالكشن جهت ذخيره سازي داده ها استفاده ميكند، يك كالكشن براي ذخيره سازي File chunk و ديگري File metadata.
👇
👍1
🛃 آزمون
بعد از از دست رفتن نود primary در Replica Set ، كدام مكانيزم جهت انتخاب نود جديد به عنوان Primary استفاده مي شود؟
Anonymous Quiz
52%
Nodes Elections
48%
Nodes Heartbeats
Majority of members

🔹در يك كلاستر ديتابيس مونگو، طراحي، انتخاب تعداد نود و پيكربندي آن ها بسيار حائز اهميت مي باشد.

🔹براي نمونه، مفهوم majority بيانگر شرط در دسترس بودن نود primary در كلاستر مي باشد.

🔹به اين معني كه حداقل چه تعداد نود بايد در كلاستر باقي مانده باشند تا همچنان امكان انتخاب نود primary وجود داشته باشد.
🛃آزمون
در يك كلاستر ديتابيس مونگو كه داراي ١٠ نود مي باشد، حداكثر چه تعداد نود مي توانند در راي گيري جهت انتخاب نود Primary شركت كنند؟
Anonymous Quiz
30%
7
30%
9
41%
10
👍2
🛃 آزمون
در تصوير زير، كه نمايش دهنده دو ديتاسنتر داراي نودهاي يك كلاستر ديتايس مونگو مي باشد، در صورت قطع شدن ارتباط ديتاسنتر اول DC1 با ديتاسنتر دوم DC2، چه اتفاقي براي كلاستر مي افتد؟
Anonymous Quiz
51%
ديتاسنتر اول DC1 همچنان سرويس ميدهد، ديتاسنتر دوم Down مي شود.
17%
ديتاسنتر دوم DC2 همچنان سرويس ميدهد، ديتاسنتر اول Down مي شود.
32%
كل كلاستر Down مي شود.