SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
‫های‬‫روش‬Sharding‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬
:‫کت‬‫شر‬ ‫ی‬ ‫درباره‬
●‫داده‬‫کز‬‫مر‬ ‫و‬ ‫سازی‬ ‫مجازی‬ ،‫ابری‬ ‫رایانش‬ ‫های‬‫حل‬ ‫راه‬ ‫ارائه‬
●‫ابری‬ ‫رایانش‬ ‫های‬ ‫محیط‬ ‫ای‬‫ر‬‫ب‬ ‫افزار‬ ‫نرم‬ ‫توسعه‬ ‫و‬ ‫تولید‬ ،‫احی‬‫ر‬‫ط‬
●‫بهداشت‬ ‫و‬ ‫آموزشی‬ ،‫ات‬‫ر‬‫مخاب‬ ‫های‬ ‫زمینه‬ ‫در‬ ‫خدمات‬ ‫ارائه‬
●‫بنیاد‬ ‫از‬ ‫حمایت‬OpenStack‫ا ن‬‫ر‬‫ای‬ ‫در‬ ‫کت‬‫شر‬ ‫اولین‬ ‫عنوا ن‬ ‫به‬
●‫انجمن‬ ‫حامی‬ ‫اولین‬OpenStack‫ا ن‬‫ر‬‫ای‬
innfinision.net‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬
‫فهرست‬:
●‫مشتریا ن‬ ‫داستا ن‬
●Sharding‫چیست؟‬
●‫به‬ ‫زمانی‬ ‫چه‬Sharding‫داریم؟‬ ‫نیاز‬
●‫چند‬ ‫چه‬Shard‫داریم؟‬ ‫نیاز‬
●‫انواع‬Sharding
●‫یک‬ ‫چگونه‬Shard Key‫کنیم؟‬ ‫انتخاب‬
●‫دلیل‬Sharding
●‫گیری‬ ‫نتیجه‬
‫مشتریا ن‬ ‫داستا ن‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
Fouraquare:
●۵۰‫کاربر‬ ‫میلیو ن‬
●۶‫)روزی‬ ‫روز‬ ‫در‬ ‫حضور‬ ‫اعلم‬ ‫میلیارد‬۶(‫یابد‬‫می‬ ‫افزایش‬ ‫میلیو ن‬
●۵۵‫علهقه‬ ‫مورد‬ ‫های‬ ‫مکا ن‬ ‫و‬ ‫نقاط‬ ‫میلیو ن‬
●۱،۷‫کنند‬‫می‬ ‫استفاده‬ ‫بازاریابی‬ ‫ای‬‫ر‬‫ب‬ ‫نامه‬‫ر‬‫ب‬ ‫این‬ ‫از‬‫تاجر‬ ‫میلیو ن‬
●۳۰۰٫۰۰۰‫ثانیه‬ ‫در‬ ‫عملیات‬
●۵٬۵‫مدارک‬ ‫و‬ ‫اسناد‬ ‫میلیو ن‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
●۱۱) ‫خوشه‬cluster(mongoDB
۸) ‫خرد‬ ‫ها‬‫آ ن‬ ‫از‬ ‫تا‬shard‫اند‬‫شده‬ (
) ‫خوشه‬ ‫بزرگترین‬cluster(۱۵(‫ها‬ ‫حضور‬ ‫)اعلم‬ ‫دارد‬ ‫شارد‬ ‫تا‬
‫ا ن‬‫ر‬‫کارب‬ ‫ی‬ ‫شناسه‬ ‫روی‬‫بر‬ ‫شده‬ ‫خرد‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
CarFax:
●۱۳‫اسناد‬ ‫میلیارد‬
●۱٬۵‫است‬ ‫شده‬ ‫اضافه‬ ‫سال‬‫هر‬ ‫اسناد‬ ‫میلیارد‬
●‫شامل‬ ‫خودرو‬‫هر‬ ‫ارش‬‫ز‬‫گ‬۲۰۰‫است‬ ‫سند‬
●۱۲shard
●۹‫گره‬replica set
●Replica‫در‬ ‫ها‬۳‫اند‬ ‫شده‬ ‫توزیع‬‫سنتر‬ ‫دیتا‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫نتیجه‬‫نتیجه‬ MongoDBMongoDB ‫وضعیت‬‫وضعیت‬
•‫عملکرد‬۴‫سریعتر‬‫ابر‬‫ر‬‫ب‬
•Scale out‫از‬ ‫استفاده‬ ‫با‬
‫هقیمت‬ ‫ارزا ن‬ ‫سرورهای‬
•‫داخلی‬ ‫افزونگی‬ ‫دارای‬
•‫مدل‬‫پذیر‬ ‫انعطاف‬ ‫شمای‬
‫داده‬
•‫هقوی‬ ‫سازگاری‬
•‫تحلیل‬ ‫و‬ ‫تجزیه‬
‫اوا ن‬‫ر‬‫ف‬ ‫های‬ ‫بررسی‬ ‫از‬ ‫پس‬NoSQL،‫ها‬mongoDB.‫کردند‬ ‫انتخاب‬ ‫را‬
•MongoDB‫ذخیره‬ ‫محل‬
‫است‬ ‫ها‬‫داده‬ ‫اصلی‬ ‫سازی‬
•۵۰‫سرور‬
•۱۰‫شارد‬
•۵‫گره‬Replica Set‫هر‬ ‫در‬
‫شارد‬
•‫تاریخچه‬ ‫داده‬ ‫پایگاه‬
‫خودرویی‬
•۱۱‫ساله‬‫)هر‬ ‫رکورد‬ ‫میلیارد‬۱
(‫شود‬ ‫می‬ ‫اضافه‬ ‫میلیارد‬
•‫سنگین‬
•‫پرهزینه‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
Sharding‫چیست؟‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
PrimaryPrimary
SecondarySecondary
SecondarySecondary
Shard 1
PrimaryPrimary
SecondarySecondary
SecondarySecondary
Shard 2
PrimaryPrimary
SecondarySecondary
SecondarySecondary
Shard 3
PrimaryPrimary
SecondarySecondary
SecondarySecondary
Shard N
…
Query RouterQuery Router Query RouterQuery Router Query RouterQuery Router
……
DriverDriver
ApplicationApplication
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
●‫نوع‬ ‫سه‬sharding:‫دارد‬ ‫وجود‬
●Hash-based
●Range-based
●Tag-aware
●‫نیاز‬ ‫اساس‬‫بر‬ ‫سازی‬ ‫ذخیره‬ ‫فضای‬ ‫کرد ن‬ ‫زیاد‬ ‫و‬ ‫کم‬
●‫خودکار‬ ‫سازی‬ ‫تعادل‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
mongod
‫خواند ن/نوشتن‬ ‫پذیری‬ ‫مقیاس‬
Key Range
0..100
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
mongod mongod
Key Range
0..50
Key Range
51..100
‫خواند ن/نوشتن‬ ‫پذیری‬ ‫مقیاس‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
mongod mongod mongod mongod
Key Range
0..25
Key Range
26..50
Key Range
51..75
Key Range
76.. 100
‫خواند ن/نوشتن‬ ‫پذیری‬ ‫مقیاس‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫به‬ ‫زمانی‬ ‫چه‬Sharding‫داریم؟‬ ‫نیاز‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫یا‬ ‫سرور‬ ‫یک‬ ‫آیا‬Replica set:
●‫میباشد؟‬ ‫اطلعات‬ ‫تمام‬ ‫سازی‬ ‫ذخیره‬ ‫ای‬‫ر‬‫ب‬ ‫کافی‬ ‫فضای‬ ‫دارای‬
●‫عملیاتی‬ ‫توا ن‬ ‫به‬ ‫تواند‬‫می‬query‫کند؟‬ ‫رسیدگی‬ ‫ها‬
●‫تمام‬ ‫به‬ ‫تواند‬‫می‬query‫دهد؟‬ ‫پاسخ‬ ‫سریعا‬ ‫ها‬
‫سرور‬ ‫مشخصات‬
Disk Capacity
Disk IOPS
RAM
Network
Disk IOPS
RAM
Network
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫چند‬ ‫به‬Shard‫داریم؟‬ ‫نیاز‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
: ‫دیسک‬ ‫فضای‬
.‫باشد‬ ‫نیاز‬ ‫مورد‬ ‫سازی‬ ‫ذخیره‬ ‫اندازه‬ ‫از‬‫بیشتر‬ ‫باید‬ ‫شاردها‬ ‫تمام‬ ‫در‬ ‫دیسک‬ ‫فضای‬ ‫مجموع‬
:‫مثال‬
= ‫کل‬ ‫سازی‬ ‫ذخیره‬ ‫ی‬ ‫انداره‬3TB
= ‫سرور‬ ‫سازی‬ ‫ذخیره‬ ‫ی‬ ‫اندازه‬2TB
‫به‬۲‫داریم‬ ‫نیاز‬ ‫شارد‬
:‫مثال‬
= ‫کل‬ ‫سازی‬ ‫ذخیره‬ ‫ی‬ ‫انداره‬3TB
= ‫سرور‬ ‫سازی‬ ‫ذخیره‬ ‫ی‬ ‫اندازه‬2TB
‫به‬۲‫داریم‬ ‫نیاز‬ ‫شارد‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
Sharding‫در‬RAM:
●‫مجموع‬RAM< ‫ها‬ ‫شارد‬‫اسر‬‫ر‬‫س‬ ‫در‬Workset
Workset‫شوند‬‫می‬ ‫دیده‬‫بیشتر‬ ‫ا‬‫ا‬ ‫غالب‬ ‫که‬ ‫اسناد‬ ‫از‬ ‫ای‬‫مجموعه‬ =
●Workset‫در‬RAM:
‫کمتر‬‫تأخیر‬ ‫زما ن‬
‫بالتر‬ ‫عملیاتی‬ ‫توا ن‬
‫مثال‬
Working Set = 428 GB
Server RAM = 128 GB
۴۲۸ / ۱۲۸ = ۳،۳۴
‫به‬۴‫داریم‬ ‫نیاز‬ ‫شارد‬
‫مثال‬
Working Set = 428 GB
Server RAM = 128 GB
۴۲۸ / ۱۲۸ = ۳،۳۴
‫به‬۴‫داریم‬ ‫نیاز‬ ‫شارد‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
●) ‫کار‬ ‫مجموعه‬ ‫و‬ ‫شاخص‬ ‫حجم‬ ‫گیری‬‫اندازه‬Working Set & Index Size(
: ‫مجموعه‬‫هر‬ ‫شاخص‬ ‫اندازه‬
db.stats()
:‫کار‬ ‫مجموعه‬ ‫حجم‬ ‫حدود‬
db.serverStatus({ workingSet: 1})
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
: ‫دیسک‬ ‫عملیاتی‬ ‫توا ن‬
●‫مجموع‬IOPS‫از‬‫بیشتر‬ ‫باید‬ ‫ها‬ ‫شارد‬‫اسر‬‫ر‬‫س‬ ‫در‬IOPS‫باشد‬ ‫نیاز‬ ‫مورد‬
●‫آورد‬‫ر‬‫ب‬IOPS‫است‬ ‫دشوار‬ ‫بسیار‬
●‫توضیحات‬ ‫رسانی‬ ‫روز‬ ‫به‬
●‫ها‬ ‫شاخص‬ ‫رسانی‬ ‫روز‬ ‫به‬
●‫جورنال‬ ‫به‬ ‫کرد ن‬ ‫اضافه‬
●‫لگ‬ ‫به‬ ‫ورود‬
●‫گیری‬ ‫اندازه‬ ‫و‬ ‫اولیه‬ ‫نمونه‬ ‫یک‬ ‫ساخت‬ :‫روش‬ ‫بهترین‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
: ‫دیسک‬ ‫عملیاتی‬ ‫توا ن‬
●‫مجموع‬IOPS‫از‬‫بیشتر‬ ‫باید‬ ‫ها‬ ‫شارد‬‫اسر‬‫ر‬‫س‬ ‫در‬IOPS‫باشد‬ ‫نیاز‬ ‫مورد‬
●‫آورد‬‫ر‬‫ب‬IOPS‫است‬ ‫دشوار‬ ‫بسیار‬
●‫توضیحات‬ ‫رسانی‬ ‫روز‬ ‫به‬
●‫ها‬ ‫شاخص‬ ‫رسانی‬ ‫روز‬ ‫به‬
●‫جورنال‬ ‫به‬ ‫کرد ن‬ ‫اضافه‬
●‫لگ‬ ‫به‬ ‫ورود‬
●‫گیری‬ ‫اندازه‬ ‫و‬ ‫اولیه‬ ‫نمونه‬ ‫یک‬ ‫ساخت‬ :‫روش‬ ‫بهترین‬
‫مثال‬
IOPS= ‫نیاز‬ ‫مورد‬۱۱۰۰۰
IOPS= ‫سرور‬۵۰۰۰
‫به‬۳‫داریم‬ ‫نیاز‬ ‫شارد‬
‫مثال‬
IOPS= ‫نیاز‬ ‫مورد‬۱۱۰۰۰
IOPS= ‫سرور‬۵۰۰۰
‫به‬۳‫داریم‬ ‫نیاز‬ ‫شارد‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
) ‫ثانیه‬ ‫در‬ ‫عملیات‬OPS: (
●S‫سرور‬ ‫یک‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ =
●G‫نیاز‬ ‫مورد‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ =
●N‫ها‬ ‫شارد‬ ‫تعداد‬ =
●G = N * S * 0.7
N = (G / 0.7S)
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
) ‫ثانیه‬ ‫در‬ ‫عملیات‬OPS: (
●S‫سرور‬ ‫یک‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ =
●G‫نیاز‬ ‫مورد‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ =
●N‫ها‬ ‫شارد‬ ‫تعداد‬ =
●G = N * S * 0.7
N = (G / 0.7S)
Sharding‫فوهقانی‬Sharding‫فوهقانی‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
) ‫ثانیه‬ ‫در‬ ‫عملیات‬OPS: (
●S‫سرور‬ ‫یک‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ =
●G‫نیاز‬ ‫مورد‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ =
●N‫ها‬ ‫شارد‬ ‫تعداد‬ =
●G = N * S * 0.7
N = (G / 0.7S)
‫مثال‬
S = ۴۰۰۰
G = ۱۰۰۰۰
N = ۳،۵۷
‫به‬۴‫داریم‬ ‫نیاز‬ ‫شارد‬
‫مثال‬
S = ۴۰۰۰
G = ۱۰۰۰۰
N = ۳،۵۷
‫به‬۴‫داریم‬ ‫نیاز‬ ‫شارد‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫انواع‬Sharding
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
Range Sharding
mongod mongod mongod mongod
Key Range
0..25
Key Range
26..50
Key Range
51..75
Key Range
76.. 100
‫خواند ن/نوشتن‬ ‫پذیری‬ ‫مقیاس‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
Tag Aware Sharding
mongod mongod mongod mongod
Shard Tags
Shard Tag ‫شروع‬ ‫پایا ن‬
‫زمستا ن‬ 23 Dec 21 Mar
‫بهار‬ 22 Mar 21 Jun
‫تابستا ن‬ 21 Jun 23 Sep
‫پاییز‬ 24 Sep 22 Dec
Tag Ranges
‫زمستا ن‬ ‫بهار‬ ‫تابستا ن‬ ‫پاییز‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
Hash Sharding
mongod mongod mongod mongod
Hash Range
0000..4444
Hash Range
4445..8000
Hash Range
i8001..aaaa
Hash Range
aaab..ffff
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
Hash Sharding
●: ‫ایا‬‫ز‬‫م‬
.‫شوند‬‫می‬ ‫توزیع‬ ‫مساوی‬ ‫صورت‬ ‫به‬ ‫ها‬‫داده‬
●: ‫معایب‬
.‫آیند‬‫می‬ ‫در‬ ‫فشرده‬ ‫صورت‬ ‫به‬ ‫ها‬ ‫شاخص‬ ‫و‬ ‫تصادفی‬ ‫های‬‫داده‬ ‫بروزرسانی‬ ‫خروجی‬ ‫و‬ ‫ورودی‬
.‫آیند‬‫می‬ ‫در‬ ‫اکنده‬‫ر‬‫پ‬ ‫صورت‬ ‫به‬ ‫هستند‬ ‫محدوده‬ ‫اساس‬‫بر‬ ‫که‬ ‫هایی‬ ‫جو‬ ‫و‬ ‫پرس‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
Range Sharding Document Distribution
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
Hashed Sharding Document Distribution
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫یک‬ ‫چگونه‬Shard Key‫کنیم؟‬ ‫انتخاب‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫یک‬Shard Key: ‫خوب‬
●.‫دارد‬ ‫کافی‬ ‫کاردینالیتی‬
●.‫کند‬ ‫می‬ ‫توزیع‬ ‫مساوی‬ ‫صورت‬ ‫به‬ ‫را‬ ‫ها‬‫نوشته‬
●‫)انزوا‬ ‫خواند‬‫می‬ ‫دار‬ ‫هدف‬query.(‫ها‬
Shard Key‫ی‬ ‫همه‬ ‫در‬ ‫امکا ن‬ ‫صورت‬ ‫در‬query: ‫باشد‬ ‫ها‬
●.‫شوند‬‫می‬ ‫آوری‬ ‫جمع‬ ‫اکنده‬‫ر‬‫پ‬ ‫صورت‬ ‫این‬‫غیر‬ ‫در‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫یک‬ ‫انتخاب‬Shard Key: ‫است‬ ‫مهم‬ ‫خوب‬
●.‫دارد‬ ‫زیادی‬‫تأثیر‬ ‫پذیری‬ ‫مقیاس‬ ‫و‬ ‫عملکرد‬‫بر‬
●.‫بود‬ ‫خواهد‬ ‫هقیمت‬ ‫ا ن‬‫ر‬‫گ‬ ‫آ ن‬ ‫داد ن‬‫تغییر‬ ‫ا‬‫ا‬ ‫بعد‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
● Induces jumbo chunks
● Examples: boolean field
● Monotonically increasing shard key values cause hot
spots on inserts
● Examples: timestamps, _id
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫دلیل‬Sharding
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
●: ‫پذیری‬ ‫مقیاس‬
‫ها‬‫داده‬ ‫حجم‬
‫ها‬ ‫جو‬ ‫و‬ ‫پرس‬ ‫حجم‬
●: ‫محلی‬ ‫های‬‫نوشته‬ ‫با‬ ‫جهانی‬ ‫ار‬‫ر‬‫استق‬
‫افیا‬‫ر‬‫جغ‬ ‫از‬ ‫بود ن‬ ‫آگاه‬ ‫هقابلیت‬ ‫با‬ ‫شاردینگ‬
●‫شده‬ ‫بندی‬ ‫طبقه‬ ‫سازی‬ ‫ذخیره‬
●‫ها‬ ‫پشتیبانی‬ ‫سریع‬ ‫بازگرداند ن‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫محلی‬ ‫های‬‫نوشته‬ ‫با‬ ‫جهانی‬ ‫ار‬‫ر‬‫استق‬
Primary:NYC
Secondary:NYC
Primary:LON
Primary:SYD
Secondary:LON
Secondary:NYC
Secondary:SYD
Secondary:LON
Secondary:SYD
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫شده‬ ‫بندی‬ ‫لیه‬ ‫سازی‬ ‫ذخیره‬
●‫ها‬ ‫افزار‬‫سخت‬ ‫هزینه‬ ‫در‬ ‫جویی‬ ‫صرفه‬
●‫سریعتر‬ ‫های‬ ‫سرور‬ ‫روی‬ ‫اند‬‫داشته‬ ‫دسترسی‬‫بیشتر‬ ‫که‬ ‫اسنادی‬ ‫داد ن‬ ‫ار‬‫ر‬‫هق‬
‫کندتر‬ ‫های‬ ‫سرور‬ ‫روی‬ ‫اسناد‬ ‫و‬ ‫ها‬‫داده‬ ‫گرفتن‬ ‫ار‬‫ر‬‫هق‬
●‫از‬ ‫استفاده‬Tag Aware Sharding
mongod mongod mongod mongod
‫فعلی‬ ‫فعلی‬ ‫آرشیو‬ ‫آرشیو‬
SSDSSD SSDSSD HDDHDD HDDHDD
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫سریع‬ ‫بازگرداند ن‬
●‫دیتابیس‬۴۰‫ابایت‬‫ر‬‫ت‬
●۲‫شارد‬۲۰‫ابایتی‬‫ر‬‫ت‬
●: ‫چالش‬

mongod mongod
20 TB 20 TB
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫سریع‬ ‫بازگرداند ن‬
●‫دیتابیس‬۴۰‫ابایت‬‫ر‬‫ت‬
●۴‫شارد‬۱۰‫ابایتی‬‫ر‬‫ت‬
●: ‫چالش‬
‫اطلعات‬ ‫بازگرداند ن‬۵۰.‫گیرد‬‫می‬ ‫انجام‬‫سریعتر‬ %
mongod mongod
10 TB 10 TB
mongod mongod
10 TB 10 TB
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫گیری‬‫نتیجه‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
●:‫کنید‬ ‫بررسی‬ ‫را‬‫زیر‬ ‫نکات‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫شارد‬ ‫تعیین‬ ‫ای‬‫ر‬‫ب‬
‫نیاز‬ ‫مورد‬ ‫سازی‬ ‫ذخیره‬
‫تاخیر‬ ‫زما ن‬ ‫سرعت‬
‫نیاز‬ ‫مورد‬ ‫عملیاتی‬ ‫توا ن‬
●: ‫کل‬ ‫مشتق‬
‫دیسک‬ ‫ظرفیت‬
‫دیسک‬ ‫توا ن‬
‫رم‬
●.‫کنید‬ ‫تعیین‬ ‫ها‬ ‫سرور‬ ‫فردی‬ ‫مشخصات‬ ‫اساس‬‫بر‬ ‫را‬ ‫ها‬ ‫شارد‬ ‫تعداد‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫هقوت‬ ‫نقاط‬Sharding:
●‫پذیری‬ ‫مقیاس‬
●‫افیا‬‫ر‬‫جغ‬ ‫از‬ ‫بود ن‬ ‫آگاه‬ ‫هقابلیت‬ ‫با‬ ‫ها‬‫کلستر‬
●‫شده‬ ‫بندی‬ ‫طبقه‬ ‫سازی‬ ‫ذخیره‬
●‫ها‬ ‫پشتیبانی‬ ‫سریع‬ ‫بازگرداند ن‬
‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
‫متشکریم‬
Ali Hallaji
Ali.Hallaji@innfinision.net
innfinision.net

Contenu connexe

Similaire à Sharding

Big Data Processing in Cloud Computing Environments
Big Data Processing in Cloud Computing EnvironmentsBig Data Processing in Cloud Computing Environments
Big Data Processing in Cloud Computing EnvironmentsFarzad Nozarian
 
مدل دستیابی به بانکداری باز در ایران
مدل دستیابی به بانکداری باز در ایرانمدل دستیابی به بانکداری باز در ایران
مدل دستیابی به بانکداری باز در ایرانNader Heydari
 
مهاجرت به متن باز در شرکت توزیع برق مشهد
مهاجرت به متن باز در شرکت توزیع برق مشهدمهاجرت به متن باز در شرکت توزیع برق مشهد
مهاجرت به متن باز در شرکت توزیع برق مشهدعباس بني اسدي مقدم
 
Bi and data mining with Oracle
Bi and data mining with OracleBi and data mining with Oracle
Bi and data mining with Oracleghanadbashi
 
اسلايد آموزشي هوش تجاري
اسلايد آموزشي هوش تجارياسلايد آموزشي هوش تجاري
اسلايد آموزشي هوش تجاريAli Masoombeigi
 
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEWآموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEWfaradars
 
agil software managment by scrunm in tfs
agil software managment by scrunm in tfsagil software managment by scrunm in tfs
agil software managment by scrunm in tfsReza Rahimy
 
Fo it 94-11-database
Fo it 94-11-databaseFo it 94-11-database
Fo it 94-11-databasemb_dadkhah
 
نمایه سازی ماشینی در گوگل
نمایه سازی ماشینی در گوگلنمایه سازی ماشینی در گوگل
نمایه سازی ماشینی در گوگلJavad Pourhosaini
 
ورودی خروجی Hadoop
ورودی خروجی Hadoopورودی خروجی Hadoop
ورودی خروجی Hadoopnasser rezaei
 
Introduction to Apache Hadoop in Persian - آشنایی با هدوپ
Introduction to Apache Hadoop in Persian - آشنایی با هدوپIntroduction to Apache Hadoop in Persian - آشنایی با هدوپ
Introduction to Apache Hadoop in Persian - آشنایی با هدوپMobin Ranjbar
 
Raid type, Raid تکنولوژی ,
Raid type, Raid  تکنولوژی , Raid type, Raid  تکنولوژی ,
Raid type, Raid تکنولوژی , abbas pirnazaraine
 
بازاریابی دیجیتال - روز هفتم
بازاریابی دیجیتال - روز هفتمبازاریابی دیجیتال - روز هفتم
بازاریابی دیجیتال - روز هفتمAdel Talebi
 
Navid Conference - 1394 - Shiraz, Iran
Navid Conference - 1394 - Shiraz, IranNavid Conference - 1394 - Shiraz, Iran
Navid Conference - 1394 - Shiraz, IranHamed Takmil
 

Similaire à Sharding (20)

Big Data Processing in Cloud Computing Environments
Big Data Processing in Cloud Computing EnvironmentsBig Data Processing in Cloud Computing Environments
Big Data Processing in Cloud Computing Environments
 
مدل دستیابی به بانکداری باز در ایران
مدل دستیابی به بانکداری باز در ایرانمدل دستیابی به بانکداری باز در ایران
مدل دستیابی به بانکداری باز در ایران
 
داده‌کاوی و زبان برنامه‌نویسی R
داده‌کاوی و زبان برنامه‌نویسی Rداده‌کاوی و زبان برنامه‌نویسی R
داده‌کاوی و زبان برنامه‌نویسی R
 
مهاجرت به متن باز در شرکت توزیع برق مشهد
مهاجرت به متن باز در شرکت توزیع برق مشهدمهاجرت به متن باز در شرکت توزیع برق مشهد
مهاجرت به متن باز در شرکت توزیع برق مشهد
 
Microsoft BI Sumery
Microsoft BI SumeryMicrosoft BI Sumery
Microsoft BI Sumery
 
Bi and data mining with Oracle
Bi and data mining with OracleBi and data mining with Oracle
Bi and data mining with Oracle
 
اسلايد آموزشي هوش تجاري
اسلايد آموزشي هوش تجارياسلايد آموزشي هوش تجاري
اسلايد آموزشي هوش تجاري
 
بیگ دیتا
بیگ دیتابیگ دیتا
بیگ دیتا
 
Oracle ADF Presentation
Oracle ADF PresentationOracle ADF Presentation
Oracle ADF Presentation
 
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEWآموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
 
agil software managment by scrunm in tfs
agil software managment by scrunm in tfsagil software managment by scrunm in tfs
agil software managment by scrunm in tfs
 
Fo it 94-11-database
Fo it 94-11-databaseFo it 94-11-database
Fo it 94-11-database
 
نمایه سازی ماشینی در گوگل
نمایه سازی ماشینی در گوگلنمایه سازی ماشینی در گوگل
نمایه سازی ماشینی در گوگل
 
ورودی خروجی Hadoop
ورودی خروجی Hadoopورودی خروجی Hadoop
ورودی خروجی Hadoop
 
Introduction to Apache Hadoop in Persian - آشنایی با هدوپ
Introduction to Apache Hadoop in Persian - آشنایی با هدوپIntroduction to Apache Hadoop in Persian - آشنایی با هدوپ
Introduction to Apache Hadoop in Persian - آشنایی با هدوپ
 
Verilog
VerilogVerilog
Verilog
 
HEVC Seminar,zamanian
HEVC Seminar,zamanianHEVC Seminar,zamanian
HEVC Seminar,zamanian
 
Raid type, Raid تکنولوژی ,
Raid type, Raid  تکنولوژی , Raid type, Raid  تکنولوژی ,
Raid type, Raid تکنولوژی ,
 
بازاریابی دیجیتال - روز هفتم
بازاریابی دیجیتال - روز هفتمبازاریابی دیجیتال - روز هفتم
بازاریابی دیجیتال - روز هفتم
 
Navid Conference - 1394 - Shiraz, Iran
Navid Conference - 1394 - Shiraz, IranNavid Conference - 1394 - Shiraz, Iran
Navid Conference - 1394 - Shiraz, Iran
 

Plus de Ali Hallaji

Plus de Ali Hallaji (9)

Next Generation FIDS for airports
Next Generation FIDS for airportsNext Generation FIDS for airports
Next Generation FIDS for airports
 
Next Generation FIDS for airports
Next Generation FIDS for airportsNext Generation FIDS for airports
Next Generation FIDS for airports
 
MongoDB
MongoDBMongoDB
MongoDB
 
M101
M101M101
M101
 
M102
M102M102
M102
 
M202
M202M202
M202
 
PyTables
PyTablesPyTables
PyTables
 
Py tables
Py tablesPy tables
Py tables
 
PyTables
PyTablesPyTables
PyTables
 

Sharding

  • 2. :‫کت‬‫شر‬ ‫ی‬ ‫درباره‬ ●‫داده‬‫کز‬‫مر‬ ‫و‬ ‫سازی‬ ‫مجازی‬ ،‫ابری‬ ‫رایانش‬ ‫های‬‫حل‬ ‫راه‬ ‫ارائه‬ ●‫ابری‬ ‫رایانش‬ ‫های‬ ‫محیط‬ ‫ای‬‫ر‬‫ب‬ ‫افزار‬ ‫نرم‬ ‫توسعه‬ ‫و‬ ‫تولید‬ ،‫احی‬‫ر‬‫ط‬ ●‫بهداشت‬ ‫و‬ ‫آموزشی‬ ،‫ات‬‫ر‬‫مخاب‬ ‫های‬ ‫زمینه‬ ‫در‬ ‫خدمات‬ ‫ارائه‬ ●‫بنیاد‬ ‫از‬ ‫حمایت‬OpenStack‫ا ن‬‫ر‬‫ای‬ ‫در‬ ‫کت‬‫شر‬ ‫اولین‬ ‫عنوا ن‬ ‫به‬ ●‫انجمن‬ ‫حامی‬ ‫اولین‬OpenStack‫ا ن‬‫ر‬‫ای‬
  • 3. innfinision.net‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ ‫فهرست‬: ●‫مشتریا ن‬ ‫داستا ن‬ ●Sharding‫چیست؟‬ ●‫به‬ ‫زمانی‬ ‫چه‬Sharding‫داریم؟‬ ‫نیاز‬ ●‫چند‬ ‫چه‬Shard‫داریم؟‬ ‫نیاز‬ ●‫انواع‬Sharding ●‫یک‬ ‫چگونه‬Shard Key‫کنیم؟‬ ‫انتخاب‬ ●‫دلیل‬Sharding ●‫گیری‬ ‫نتیجه‬
  • 4. ‫مشتریا ن‬ ‫داستا ن‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 5. ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 6. Fouraquare: ●۵۰‫کاربر‬ ‫میلیو ن‬ ●۶‫)روزی‬ ‫روز‬ ‫در‬ ‫حضور‬ ‫اعلم‬ ‫میلیارد‬۶(‫یابد‬‫می‬ ‫افزایش‬ ‫میلیو ن‬ ●۵۵‫علهقه‬ ‫مورد‬ ‫های‬ ‫مکا ن‬ ‫و‬ ‫نقاط‬ ‫میلیو ن‬ ●۱،۷‫کنند‬‫می‬ ‫استفاده‬ ‫بازاریابی‬ ‫ای‬‫ر‬‫ب‬ ‫نامه‬‫ر‬‫ب‬ ‫این‬ ‫از‬‫تاجر‬ ‫میلیو ن‬ ●۳۰۰٫۰۰۰‫ثانیه‬ ‫در‬ ‫عملیات‬ ●۵٬۵‫مدارک‬ ‫و‬ ‫اسناد‬ ‫میلیو ن‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 7. ●۱۱) ‫خوشه‬cluster(mongoDB ۸) ‫خرد‬ ‫ها‬‫آ ن‬ ‫از‬ ‫تا‬shard‫اند‬‫شده‬ ( ) ‫خوشه‬ ‫بزرگترین‬cluster(۱۵(‫ها‬ ‫حضور‬ ‫)اعلم‬ ‫دارد‬ ‫شارد‬ ‫تا‬ ‫ا ن‬‫ر‬‫کارب‬ ‫ی‬ ‫شناسه‬ ‫روی‬‫بر‬ ‫شده‬ ‫خرد‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 8. ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 9. CarFax: ●۱۳‫اسناد‬ ‫میلیارد‬ ●۱٬۵‫است‬ ‫شده‬ ‫اضافه‬ ‫سال‬‫هر‬ ‫اسناد‬ ‫میلیارد‬ ●‫شامل‬ ‫خودرو‬‫هر‬ ‫ارش‬‫ز‬‫گ‬۲۰۰‫است‬ ‫سند‬ ●۱۲shard ●۹‫گره‬replica set ●Replica‫در‬ ‫ها‬۳‫اند‬ ‫شده‬ ‫توزیع‬‫سنتر‬ ‫دیتا‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 10. ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 11. ‫نتیجه‬‫نتیجه‬ MongoDBMongoDB ‫وضعیت‬‫وضعیت‬ •‫عملکرد‬۴‫سریعتر‬‫ابر‬‫ر‬‫ب‬ •Scale out‫از‬ ‫استفاده‬ ‫با‬ ‫هقیمت‬ ‫ارزا ن‬ ‫سرورهای‬ •‫داخلی‬ ‫افزونگی‬ ‫دارای‬ •‫مدل‬‫پذیر‬ ‫انعطاف‬ ‫شمای‬ ‫داده‬ •‫هقوی‬ ‫سازگاری‬ •‫تحلیل‬ ‫و‬ ‫تجزیه‬ ‫اوا ن‬‫ر‬‫ف‬ ‫های‬ ‫بررسی‬ ‫از‬ ‫پس‬NoSQL،‫ها‬mongoDB.‫کردند‬ ‫انتخاب‬ ‫را‬ •MongoDB‫ذخیره‬ ‫محل‬ ‫است‬ ‫ها‬‫داده‬ ‫اصلی‬ ‫سازی‬ •۵۰‫سرور‬ •۱۰‫شارد‬ •۵‫گره‬Replica Set‫هر‬ ‫در‬ ‫شارد‬ •‫تاریخچه‬ ‫داده‬ ‫پایگاه‬ ‫خودرویی‬ •۱۱‫ساله‬‫)هر‬ ‫رکورد‬ ‫میلیارد‬۱ (‫شود‬ ‫می‬ ‫اضافه‬ ‫میلیارد‬ •‫سنگین‬ •‫پرهزینه‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 12. Sharding‫چیست؟‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 13. PrimaryPrimary SecondarySecondary SecondarySecondary Shard 1 PrimaryPrimary SecondarySecondary SecondarySecondary Shard 2 PrimaryPrimary SecondarySecondary SecondarySecondary Shard 3 PrimaryPrimary SecondarySecondary SecondarySecondary Shard N … Query RouterQuery Router Query RouterQuery Router Query RouterQuery Router …… DriverDriver ApplicationApplication ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 14. ●‫نوع‬ ‫سه‬sharding:‫دارد‬ ‫وجود‬ ●Hash-based ●Range-based ●Tag-aware ●‫نیاز‬ ‫اساس‬‫بر‬ ‫سازی‬ ‫ذخیره‬ ‫فضای‬ ‫کرد ن‬ ‫زیاد‬ ‫و‬ ‫کم‬ ●‫خودکار‬ ‫سازی‬ ‫تعادل‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 15. mongod ‫خواند ن/نوشتن‬ ‫پذیری‬ ‫مقیاس‬ Key Range 0..100 ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 16. mongod mongod Key Range 0..50 Key Range 51..100 ‫خواند ن/نوشتن‬ ‫پذیری‬ ‫مقیاس‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 17. mongod mongod mongod mongod Key Range 0..25 Key Range 26..50 Key Range 51..75 Key Range 76.. 100 ‫خواند ن/نوشتن‬ ‫پذیری‬ ‫مقیاس‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 18. ‫به‬ ‫زمانی‬ ‫چه‬Sharding‫داریم؟‬ ‫نیاز‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 19. ‫یا‬ ‫سرور‬ ‫یک‬ ‫آیا‬Replica set: ●‫میباشد؟‬ ‫اطلعات‬ ‫تمام‬ ‫سازی‬ ‫ذخیره‬ ‫ای‬‫ر‬‫ب‬ ‫کافی‬ ‫فضای‬ ‫دارای‬ ●‫عملیاتی‬ ‫توا ن‬ ‫به‬ ‫تواند‬‫می‬query‫کند؟‬ ‫رسیدگی‬ ‫ها‬ ●‫تمام‬ ‫به‬ ‫تواند‬‫می‬query‫دهد؟‬ ‫پاسخ‬ ‫سریعا‬ ‫ها‬ ‫سرور‬ ‫مشخصات‬ Disk Capacity Disk IOPS RAM Network Disk IOPS RAM Network ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 20. ‫چند‬ ‫به‬Shard‫داریم؟‬ ‫نیاز‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 21. : ‫دیسک‬ ‫فضای‬ .‫باشد‬ ‫نیاز‬ ‫مورد‬ ‫سازی‬ ‫ذخیره‬ ‫اندازه‬ ‫از‬‫بیشتر‬ ‫باید‬ ‫شاردها‬ ‫تمام‬ ‫در‬ ‫دیسک‬ ‫فضای‬ ‫مجموع‬ :‫مثال‬ = ‫کل‬ ‫سازی‬ ‫ذخیره‬ ‫ی‬ ‫انداره‬3TB = ‫سرور‬ ‫سازی‬ ‫ذخیره‬ ‫ی‬ ‫اندازه‬2TB ‫به‬۲‫داریم‬ ‫نیاز‬ ‫شارد‬ :‫مثال‬ = ‫کل‬ ‫سازی‬ ‫ذخیره‬ ‫ی‬ ‫انداره‬3TB = ‫سرور‬ ‫سازی‬ ‫ذخیره‬ ‫ی‬ ‫اندازه‬2TB ‫به‬۲‫داریم‬ ‫نیاز‬ ‫شارد‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 22. Sharding‫در‬RAM: ●‫مجموع‬RAM< ‫ها‬ ‫شارد‬‫اسر‬‫ر‬‫س‬ ‫در‬Workset Workset‫شوند‬‫می‬ ‫دیده‬‫بیشتر‬ ‫ا‬‫ا‬ ‫غالب‬ ‫که‬ ‫اسناد‬ ‫از‬ ‫ای‬‫مجموعه‬ = ●Workset‫در‬RAM: ‫کمتر‬‫تأخیر‬ ‫زما ن‬ ‫بالتر‬ ‫عملیاتی‬ ‫توا ن‬ ‫مثال‬ Working Set = 428 GB Server RAM = 128 GB ۴۲۸ / ۱۲۸ = ۳،۳۴ ‫به‬۴‫داریم‬ ‫نیاز‬ ‫شارد‬ ‫مثال‬ Working Set = 428 GB Server RAM = 128 GB ۴۲۸ / ۱۲۸ = ۳،۳۴ ‫به‬۴‫داریم‬ ‫نیاز‬ ‫شارد‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 23. ●) ‫کار‬ ‫مجموعه‬ ‫و‬ ‫شاخص‬ ‫حجم‬ ‫گیری‬‫اندازه‬Working Set & Index Size( : ‫مجموعه‬‫هر‬ ‫شاخص‬ ‫اندازه‬ db.stats() :‫کار‬ ‫مجموعه‬ ‫حجم‬ ‫حدود‬ db.serverStatus({ workingSet: 1}) ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 24. : ‫دیسک‬ ‫عملیاتی‬ ‫توا ن‬ ●‫مجموع‬IOPS‫از‬‫بیشتر‬ ‫باید‬ ‫ها‬ ‫شارد‬‫اسر‬‫ر‬‫س‬ ‫در‬IOPS‫باشد‬ ‫نیاز‬ ‫مورد‬ ●‫آورد‬‫ر‬‫ب‬IOPS‫است‬ ‫دشوار‬ ‫بسیار‬ ●‫توضیحات‬ ‫رسانی‬ ‫روز‬ ‫به‬ ●‫ها‬ ‫شاخص‬ ‫رسانی‬ ‫روز‬ ‫به‬ ●‫جورنال‬ ‫به‬ ‫کرد ن‬ ‫اضافه‬ ●‫لگ‬ ‫به‬ ‫ورود‬ ●‫گیری‬ ‫اندازه‬ ‫و‬ ‫اولیه‬ ‫نمونه‬ ‫یک‬ ‫ساخت‬ :‫روش‬ ‫بهترین‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 25. : ‫دیسک‬ ‫عملیاتی‬ ‫توا ن‬ ●‫مجموع‬IOPS‫از‬‫بیشتر‬ ‫باید‬ ‫ها‬ ‫شارد‬‫اسر‬‫ر‬‫س‬ ‫در‬IOPS‫باشد‬ ‫نیاز‬ ‫مورد‬ ●‫آورد‬‫ر‬‫ب‬IOPS‫است‬ ‫دشوار‬ ‫بسیار‬ ●‫توضیحات‬ ‫رسانی‬ ‫روز‬ ‫به‬ ●‫ها‬ ‫شاخص‬ ‫رسانی‬ ‫روز‬ ‫به‬ ●‫جورنال‬ ‫به‬ ‫کرد ن‬ ‫اضافه‬ ●‫لگ‬ ‫به‬ ‫ورود‬ ●‫گیری‬ ‫اندازه‬ ‫و‬ ‫اولیه‬ ‫نمونه‬ ‫یک‬ ‫ساخت‬ :‫روش‬ ‫بهترین‬ ‫مثال‬ IOPS= ‫نیاز‬ ‫مورد‬۱۱۰۰۰ IOPS= ‫سرور‬۵۰۰۰ ‫به‬۳‫داریم‬ ‫نیاز‬ ‫شارد‬ ‫مثال‬ IOPS= ‫نیاز‬ ‫مورد‬۱۱۰۰۰ IOPS= ‫سرور‬۵۰۰۰ ‫به‬۳‫داریم‬ ‫نیاز‬ ‫شارد‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 26. ) ‫ثانیه‬ ‫در‬ ‫عملیات‬OPS: ( ●S‫سرور‬ ‫یک‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ = ●G‫نیاز‬ ‫مورد‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ = ●N‫ها‬ ‫شارد‬ ‫تعداد‬ = ●G = N * S * 0.7 N = (G / 0.7S) ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 27. ) ‫ثانیه‬ ‫در‬ ‫عملیات‬OPS: ( ●S‫سرور‬ ‫یک‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ = ●G‫نیاز‬ ‫مورد‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ = ●N‫ها‬ ‫شارد‬ ‫تعداد‬ = ●G = N * S * 0.7 N = (G / 0.7S) Sharding‫فوهقانی‬Sharding‫فوهقانی‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 28. ) ‫ثانیه‬ ‫در‬ ‫عملیات‬OPS: ( ●S‫سرور‬ ‫یک‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ = ●G‫نیاز‬ ‫مورد‬ ‫ثانیه‬ ‫در‬ ‫عملیات‬ = ●N‫ها‬ ‫شارد‬ ‫تعداد‬ = ●G = N * S * 0.7 N = (G / 0.7S) ‫مثال‬ S = ۴۰۰۰ G = ۱۰۰۰۰ N = ۳،۵۷ ‫به‬۴‫داریم‬ ‫نیاز‬ ‫شارد‬ ‫مثال‬ S = ۴۰۰۰ G = ۱۰۰۰۰ N = ۳،۵۷ ‫به‬۴‫داریم‬ ‫نیاز‬ ‫شارد‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 29. ‫انواع‬Sharding ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 30. Range Sharding mongod mongod mongod mongod Key Range 0..25 Key Range 26..50 Key Range 51..75 Key Range 76.. 100 ‫خواند ن/نوشتن‬ ‫پذیری‬ ‫مقیاس‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 31. Tag Aware Sharding mongod mongod mongod mongod Shard Tags Shard Tag ‫شروع‬ ‫پایا ن‬ ‫زمستا ن‬ 23 Dec 21 Mar ‫بهار‬ 22 Mar 21 Jun ‫تابستا ن‬ 21 Jun 23 Sep ‫پاییز‬ 24 Sep 22 Dec Tag Ranges ‫زمستا ن‬ ‫بهار‬ ‫تابستا ن‬ ‫پاییز‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 32. Hash Sharding mongod mongod mongod mongod Hash Range 0000..4444 Hash Range 4445..8000 Hash Range i8001..aaaa Hash Range aaab..ffff ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 33. Hash Sharding ●: ‫ایا‬‫ز‬‫م‬ .‫شوند‬‫می‬ ‫توزیع‬ ‫مساوی‬ ‫صورت‬ ‫به‬ ‫ها‬‫داده‬ ●: ‫معایب‬ .‫آیند‬‫می‬ ‫در‬ ‫فشرده‬ ‫صورت‬ ‫به‬ ‫ها‬ ‫شاخص‬ ‫و‬ ‫تصادفی‬ ‫های‬‫داده‬ ‫بروزرسانی‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ .‫آیند‬‫می‬ ‫در‬ ‫اکنده‬‫ر‬‫پ‬ ‫صورت‬ ‫به‬ ‫هستند‬ ‫محدوده‬ ‫اساس‬‫بر‬ ‫که‬ ‫هایی‬ ‫جو‬ ‫و‬ ‫پرس‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 34. Range Sharding Document Distribution ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 35. Hashed Sharding Document Distribution ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 36. ‫یک‬ ‫چگونه‬Shard Key‫کنیم؟‬ ‫انتخاب‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 37. ‫یک‬Shard Key: ‫خوب‬ ●.‫دارد‬ ‫کافی‬ ‫کاردینالیتی‬ ●.‫کند‬ ‫می‬ ‫توزیع‬ ‫مساوی‬ ‫صورت‬ ‫به‬ ‫را‬ ‫ها‬‫نوشته‬ ●‫)انزوا‬ ‫خواند‬‫می‬ ‫دار‬ ‫هدف‬query.(‫ها‬ Shard Key‫ی‬ ‫همه‬ ‫در‬ ‫امکا ن‬ ‫صورت‬ ‫در‬query: ‫باشد‬ ‫ها‬ ●.‫شوند‬‫می‬ ‫آوری‬ ‫جمع‬ ‫اکنده‬‫ر‬‫پ‬ ‫صورت‬ ‫این‬‫غیر‬ ‫در‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 38. ‫یک‬ ‫انتخاب‬Shard Key: ‫است‬ ‫مهم‬ ‫خوب‬ ●.‫دارد‬ ‫زیادی‬‫تأثیر‬ ‫پذیری‬ ‫مقیاس‬ ‫و‬ ‫عملکرد‬‫بر‬ ●.‫بود‬ ‫خواهد‬ ‫هقیمت‬ ‫ا ن‬‫ر‬‫گ‬ ‫آ ن‬ ‫داد ن‬‫تغییر‬ ‫ا‬‫ا‬ ‫بعد‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 39. ● Induces jumbo chunks ● Examples: boolean field ● Monotonically increasing shard key values cause hot spots on inserts ● Examples: timestamps, _id ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 40. ‫دلیل‬Sharding ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 41. ●: ‫پذیری‬ ‫مقیاس‬ ‫ها‬‫داده‬ ‫حجم‬ ‫ها‬ ‫جو‬ ‫و‬ ‫پرس‬ ‫حجم‬ ●: ‫محلی‬ ‫های‬‫نوشته‬ ‫با‬ ‫جهانی‬ ‫ار‬‫ر‬‫استق‬ ‫افیا‬‫ر‬‫جغ‬ ‫از‬ ‫بود ن‬ ‫آگاه‬ ‫هقابلیت‬ ‫با‬ ‫شاردینگ‬ ●‫شده‬ ‫بندی‬ ‫طبقه‬ ‫سازی‬ ‫ذخیره‬ ●‫ها‬ ‫پشتیبانی‬ ‫سریع‬ ‫بازگرداند ن‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 42. ‫محلی‬ ‫های‬‫نوشته‬ ‫با‬ ‫جهانی‬ ‫ار‬‫ر‬‫استق‬ Primary:NYC Secondary:NYC Primary:LON Primary:SYD Secondary:LON Secondary:NYC Secondary:SYD Secondary:LON Secondary:SYD ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 43. ‫شده‬ ‫بندی‬ ‫لیه‬ ‫سازی‬ ‫ذخیره‬ ●‫ها‬ ‫افزار‬‫سخت‬ ‫هزینه‬ ‫در‬ ‫جویی‬ ‫صرفه‬ ●‫سریعتر‬ ‫های‬ ‫سرور‬ ‫روی‬ ‫اند‬‫داشته‬ ‫دسترسی‬‫بیشتر‬ ‫که‬ ‫اسنادی‬ ‫داد ن‬ ‫ار‬‫ر‬‫هق‬ ‫کندتر‬ ‫های‬ ‫سرور‬ ‫روی‬ ‫اسناد‬ ‫و‬ ‫ها‬‫داده‬ ‫گرفتن‬ ‫ار‬‫ر‬‫هق‬ ●‫از‬ ‫استفاده‬Tag Aware Sharding mongod mongod mongod mongod ‫فعلی‬ ‫فعلی‬ ‫آرشیو‬ ‫آرشیو‬ SSDSSD SSDSSD HDDHDD HDDHDD ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 44. ‫سریع‬ ‫بازگرداند ن‬ ●‫دیتابیس‬۴۰‫ابایت‬‫ر‬‫ت‬ ●۲‫شارد‬۲۰‫ابایتی‬‫ر‬‫ت‬ ●: ‫چالش‬  mongod mongod 20 TB 20 TB ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 45. ‫سریع‬ ‫بازگرداند ن‬ ●‫دیتابیس‬۴۰‫ابایت‬‫ر‬‫ت‬ ●۴‫شارد‬۱۰‫ابایتی‬‫ر‬‫ت‬ ●: ‫چالش‬ ‫اطلعات‬ ‫بازگرداند ن‬۵۰.‫گیرد‬‫می‬ ‫انجام‬‫سریعتر‬ % mongod mongod 10 TB 10 TB mongod mongod 10 TB 10 TB ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 46. ‫گیری‬‫نتیجه‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 47. ●:‫کنید‬ ‫بررسی‬ ‫را‬‫زیر‬ ‫نکات‬ ‫نیاز‬ ‫مورد‬ ‫های‬ ‫شارد‬ ‫تعیین‬ ‫ای‬‫ر‬‫ب‬ ‫نیاز‬ ‫مورد‬ ‫سازی‬ ‫ذخیره‬ ‫تاخیر‬ ‫زما ن‬ ‫سرعت‬ ‫نیاز‬ ‫مورد‬ ‫عملیاتی‬ ‫توا ن‬ ●: ‫کل‬ ‫مشتق‬ ‫دیسک‬ ‫ظرفیت‬ ‫دیسک‬ ‫توا ن‬ ‫رم‬ ●.‫کنید‬ ‫تعیین‬ ‫ها‬ ‫سرور‬ ‫فردی‬ ‫مشخصات‬ ‫اساس‬‫بر‬ ‫را‬ ‫ها‬ ‫شارد‬ ‫تعداد‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net
  • 48. ‫هقوت‬ ‫نقاط‬Sharding: ●‫پذیری‬ ‫مقیاس‬ ●‫افیا‬‫ر‬‫جغ‬ ‫از‬ ‫بود ن‬ ‫آگاه‬ ‫هقابلیت‬ ‫با‬ ‫ها‬‫کلستر‬ ●‫شده‬ ‫بندی‬ ‫طبقه‬ ‫سازی‬ ‫ذخیره‬ ●‫ها‬ ‫پشتیبانی‬ ‫سریع‬ ‫بازگرداند ن‬ ‫ها‬ ‫داده‬ ‫کل ن‬ ‫روی‬‫بر‬ ‫شاردینگ‬ ‫های‬‫روش‬ innfinision.net