More Related Content More from Ali Hallaji (9) MongoDB2. :کتشر ی درباره
●دادهکزمر و سازی مجازی ،ابری رایانش هایحل راه ارائه
●ابری رایانش های محیط ایرب افزار نرم توسعه و تولید ،احیرط
●بهداشت و آموزشی ،اترمخاب های زمینه در خدمات ارائه
●بنیاد از حمایتOpenStackانرای در کتشر اولین عنوان به
●انجمن حامی اولینOpenStackانرای
5. داده پایگاهMongoDBبسیار ککهک باشکدمی یای هرابط بدون های داده پایگاه نازبهتری ییک
.باشدمی پذیر گسترش و سریع و قوی و پذیر انعطافبصورت دادها مدلjson.باشند می
)نحوی قواعد همان دستورالعملها و قواعدsyntaxرابط که باشندمی اسکریپت جاوا (shellاز آن
ویژگیهای از بعضی .باشدمی آسان و ساده بسیار اینرمیکند.بناب پیروی اسکریپت جاوا قواعد
داده پایگاه مدل به شبیه بسیار مونگوSQLوجود مونگو در هایویژگی بعضی اما ،باشد می
نظیر .ندارندjoinیا هاtrigger.پیچیده سطری چند های اکنشرت یا ها
MongoDB innfinision.net
6. ●یا سندهاDocuments:
)ایی رابطه های دیتابیس در ها ردیف مفهوم همان سندهاsqlباشند می (
●یا ها مجموعهcollection:
.باشدمی ایی رابطه های دیتابیس در جداول همان ها مجموعه
●: دیتابیس
مفهوم همان و ماندهباقی نخورده دست مفهوم اینDB.باشدمی ایرابطه های دیتابیس در
MongoDB innfinision.net
9. : اییرگ سند
●همین به و بوده نویسی برنامه هایزبان در دیکشنری ایی داده نوع به شبیه بسیار سندها
.باشدمی راحت بسیار نویس برنامه ایرب منظور
●.است داده کاهش را اضافی های اتصال به نیاز بودن ای آرایه و ارسندگ قابلیت
●شدهآسانتر های چندریختی ایجاد باعث خودکار اسکمای
●_> مخصوص کلید یک دارای سندهرidیکتا مجموعه یک سندهای بین در که هست <
.هست
MongoDB innfinision.net
10. : سریع و قدرتمند
●هاداده نوشتن و خواندن در زیاد بسیار سرعت وجود
●)کلیدها رویبر گذاری ایندکس ایجادkey(
●بصورت پردازش است ممکن زمانیهر درoffloadکه گیرد انجام کلینت سمت منطقی و
سبب احیرط اینکارایی بردن بالMongoDB.شده
MongoDB innfinision.net
11. : کلسترینگ و میرورینگ
MongoDB.باشدمی ترینگکلس سرویس دارای نچنی همکلسترینگ سرویسMongoDB
و شود اراج باید ایطیرش هر تحت آنها ی برنامه که میرود کار به کتهاییشر و سازمان ایرب بیشتر
باشد شده خارج سرویس از سرورها از یکی که زمانی حتی بماند باقی اراج حالت درسرویس در .
خواهند اراج میکنند اراج سرورها باقی که را قوانینی و نامهرب همان سرورها تمامی کلسترینگ
به که کرد خواهند کار به شروع بلفاصه سرورها باقی شود خارج سرویس از سروری اگر لذا کرد
آنFailoverمیشود گفتهسرورها باقی افتاد کار به دوباره شده خارج سرویس از سرور که زمانی .
عمل این به .یافت خواهد ادامه دوباره عادی روند و میشوند آگاهFailback. میشود گفته
MongoDB innfinision.net
12. : آسان پذیری گسترش
نامهرب سرور چند که زمانیMongoDBاحتمال آن نتیجه که میکنند اراج یکدیگر با را
.هاست بالتربرنامه لود سرعت و کمتر خطایMongoDBپایه برscale outشده احیرط بودن
روی در جداگانه طور به هاداده که میدهد را اجازه این هاداده مدل بودن ارسندگ ،است
مجدد توزیع .رساندمی تعادل به را گروه یک کردن لود و هاداده که شوند پخش سرور چندین
هاداده ذخیره از انیرنگ بدون نویسان برنامه که میدهد را امکان این که است اتوماتیک ها دسته
)شارد تکنیک این به .کنند کزتمر نویسی نامهرب رویShardچندین بین در داده و ها مجموعه (
.میپذیرید انجام اتوماتیک و خودکار بصورت که باشدمی سرور
MongoDB innfinision.net
15. : ها سند
●بصورت سندهاobject:باشندمی
}'key': 'value'{
●:دارند اهمیت هاارزش و تیبرت
}'key2': 'value2', 'key1': 'value1'{ از متفاوت }'key1': 'value1', 'key2': 'value2'{
●مونگوcase-sensitiveوtype-sensitive.باشدمی
●:باشدمی غلطزیر سند !باشد اریرتک کلید دارای تواندنمی مونگو در سند
}'key': 'value2', 'key': 'value1'{
MongoDB innfinision.net
16. Mongo:
محیط در مونگو با کار ایربshellبنویسیدmongo.دستور از باید بیسی دیتا به شدن وصل ایرب
useایجاد را ای داده پایگاه پیش از اینکه بدون حتی شما که باشید داشته توجه .کنید استفاده
دستور باشید کردهuseو دیتابیس که ارزی ،میدهد آنجام شما ایرب را پایگاه آن به سوییچ عمل
collectionبصورت سند اولین ورود در هاruntime.شودمی ساخته
MongoDB innfinision.net
17. : سند ایجاد
●دستور از باید سند ساخت رایinsert:شود استفاده
db.test.insert(}exam: “test1”{)
●دستور باfind:نماییم حاصل اطمینان اطلعات ورود صحت از میتوانیم
db.test.find()
●،بود خواهدزیر بصورت خروجی
} _id : ObjectId("4bf9bec50e32f82523389314"),username : ”test1” {
MongoDB innfinision.net
18. ●دستور با همینطورsave:کرد ایجاد سند توان می هم
db.test.save(}exam: “test2”{)
●:کرد شمارش را موجود های رکورد تعداد توان میزیر دستور با
db.test.count()
دستور چهاگر :نکتهfind.داد می انجام را کار همین هم
●ازعناصر در جستوجو ایربfindیک بصورت را شرط که صورت این به ،کرد استفاده میتوان
:میدهیم پاس آن به دیکشنری
db.test.find(}exam: “test1”{)
MongoDB innfinision.net
19. : اطلعات ایشروی
●دستور باupdate:نمود ایشروی را اطلعات میتوان
db.test.update(}exam :”test1”{, }$set: }country: ”Canada”){{
رکورد به مثال این درexamمقدارcountryحالت به راfree-schema.نمودیم اضافه
دستور از استفاده باunset.نماییم پاک رامقادیر میتوانیم
MongoDB innfinision.net
20. : اطلعات حذف
●دستور بامقادیر حذفremove.باشد می
db.test.remove(}key and value{)
●دستورremoveبا مجموعه کامل حذف ایرب ،میکند پاک را مجموع داخل اسناد فقط
تمامindexدستور از هایشdrop.نماییم می استفاده
db.test.drop()
که باشید داشته توجهdrop!نماید می پاک را کالکشن تمام
MongoDB innfinision.net
21. Javascript:
●در اسکریپت جاوا دستورات تمامshellهستند استفاده قابل مونگو
for(i=0; i<200000; i++) }
db.test.save(}num: i{);}
●دستور باcountکه بشویم مطمن میتوانیم۲۰۰۰۰۰:است شده درج کالکشن در رکورد
db.test.count()
MongoDB innfinision.net
22. Index:
نماییم مرتب نزولی و صعودی اساس دوبر را ها رکورد بود خواهیم قادر گذاری ایندکس با
این که.باشدمی مذبور کالکشن در انفعالت فعل بالی بسیار سرعت باعثامر
db.test.ensureIndex(}num: 1{)
MongoDB innfinision.net
24. SQL Terms/Concepts MongoDB Terms/Concepts
database database
table collection
row document or BSON document
column field
index index
table joins embedded documents and linking
primary key
Specify any unique column or column
combination as primary key.
primary key
In MongoDB, the primary key is automatically
set to the _id field.
MongoDB innfinision.net
25. aggregation (e.g. group by) aggregation pipeline
SQL Schema Statements MongoDB Schema Statements
CREATE TABLE users (
id MEDIUMINT NOT NULL
AUTO_INCREMENT,
user_id Varchar(30),
age Number,
status char(1),
PRIMARY KEY (id)
)
Implicitly created on first insert() operation. The
primary key _id is automatically added if _id
field is not specified.
db.users.insert( {
user_id: "abc123",
age: 55,
status: "A"
} )
However, you can also explicitly create a
collection:
db.createCollection("users")
MongoDB innfinision.net
26. ALTER TABLE users
ADD join_date DATETIME
Collections do not describe or enforce the structure of
its documents; i.e. there is no structural alteration at
the collection level.
However, at the document level, update() operations
can add fields to existing documents using the $set
operator.
db.users.update(
{ },
{ $set: { join_date: new Date() } },
{ multi: true } )
)
ALTER TABLE users
DROP COLUMN join_date
Collections do not describe or enforce the structure of
its documents; i.e. there is no structural alteration at
the collection level.
However, at the document level, update() operations
can remove fields from documents using the $unset
operator.
db.users.update(
{ },
{ $unset: { join_date: "" } },
{ multi: true }
)
MongoDB innfinision.net
27. CREATE INDEX idx_user_id_asc
ON users(user_id)
db.users.ensureIndex( { user_id: 1 } )
CREATE INDEX
idx_user_id_asc_age_desc
ON users(user_id, age DESC)
db.users.ensureIndex( { user_id: 1, age: -1 } )
DROP TABLE users db.users.drop()
MongoDB innfinision.net
28. Insert:
SQL INSERT Statements MongoDB insert() Statements
INSERT INTO users(user_id,
age,
status(
VALUES ("bcd001",
45,
"A"(
db.users.insert)
}user_id: "bcd001", age: 45, status: "A" {
)
MongoDB innfinision.net
29. SQL Update Statements MongoDB update() Statements
UPDATE users
SET status = "C"
WHERE age > 25
db.users.update)
}age: { $gt: 25 }{,
} $set: { status: "C" }{,
}multi: true{
)
UPDATE users
SET age = age + 3
WHERE status = "A"
db.users.update)
}status: "A" { ,
} $inc: { age: 3 }{,
}multi: true{
)
Update:
MongoDB innfinision.net
30. Delete:
SQL Delete Statements MongoDB remove() Statements
DELETE FROM users
WHERE status = "D"
db.users.remove( { status: "D" } )
DELETE FROM users db.users.remove) (
MongoDB innfinision.net
31. رابطPyMongo:
بستهPyMongoاگر که شودمی پیشنهاد و ،باشد می مونگو با کار ایرب پایتونی ارزاب یک
پایتون.نمایید استفاده ابزار این از اا حتم کنید کار مونگو با میخواهید و هستید کار
:نصب ایرب
pip install pymongo
MongoDB innfinision.net
32. بهمختصر نگاهیPyMongo:
با آشنایی حد در کوتاه نگاهی قسمت این درPyMongo.داشت خواهیم
●کتابخانه اول گام درPyMongo:میکنیم وارد رو
import pymongo
●از نمونه یک بعد گام درmongodباید سرویس این ،باشد نصب سیستم رویبر مونگو که )زمانی
:میسازیم (باشد فعال
Client = pymongo.MongoClient()
Client = pymongo.MongoClient('localhost', 27017)
MongoDB innfinision.net
33. ●:رابسازید خود دیتابیس میتوانید حالت چندین در شما
1 - db = client.test_database
2 - db = client['test-database']
●.نمایید عمل بال دوشکل از یکی به میتوانید خود داده پایگاه ایجاد و گذاری نام ایرب
●) ها مجموعه ایرب گذاری نام ایربcollections:نماییم عملزیر روش دو از یکی به باید (
1 - collection = db.test_collection
2 - collection = db['test-collection']
MongoDB innfinision.net
34. همان یا اطلعات ورود ایربinsert)مجموعه داخل سندcollectionمتد از (insert:کنید استفاده ()
Example = collection.insert(dictionary) میدهیم پاس اطلعات از دیکشنری یک
.شودمی ایجاد سرور رویبر حقیقی بصورت مجموعه سند ورود اولین از پس
●:کرد استفادهزیر دستور از میتوان موضوع این آزمایش ایرب
>>>db.collection_names()
[u'system.indexes', u'collection']
●:تک بصورت جستوجوی
collection.find_one(dictionary)
MongoDB innfinision.net
35. .میگرداندبر را نتیجه ،شرط اولین شدن مچ محض به
Bulk Insert:
ذخیره ایرب مونگو مکانیزم همان از که بزرگ های توده بصورت داده ورود بحث جدید مبحث در
سازی ذخیره در سریع سرعت موجبامر این و مینماید استفاده هست آرایه بصورت انبوه های سازی
بررسی دیتابیس در ورودشان صحتنظر از هادادهدیگر ،داده ورود نوع این در که ارزی ،است شده
بودن محروم ،ورود نوع این در بال سرعت اصلی دلیل .میگردند ذخیره اتومیک بصورت هاداده و نشده
هاداده از ای آرایهزیر مثال در .باشدمی داده درج صحت ازbulk:شوندمی
collection.insert([dict1, dict2, dict3, ...])
MongoDB innfinision.net
36. از استفادهquery:
از استفاده ایربqueryمتد ازfindمبنی را ایی دیکشنری که صورت بدین ،مینماییم استفاده ()
.میدهیم پاس مذکور متد به استفاده مورد شرطبر
collection.find(dict)
Indexing:
سریع ایراج ایربquery)مجموعه به باید هاcollection.نماییم اعمال ایندکس (
.هستند گذاری ایندکس قابل نزولی و صعودی اساس دوبر ها ایندکس
MongoDB innfinision.net
37. این سرعت بسیار ... ، حذفو و اضافه ،سرچ سرعت ایندکس اعمال از پسquery.یافته افزایش ها
Collection.create_index([('key1', 1), ('key2', -1)])
مقدار۱یاASCENDING- مقدار و باشدمی صعودی۱یاDESCENDING.باشدمی نزولی
MongoDB innfinision.net
39. = بستههر۳میلیون۱۰۰رکورد هزار
با تاپی لپ روی تست این۴و رم گیگcpuای هسته دوamdو .گرفته انجام ساتا معمولی هارد و
های دیتابیس جدول از یکی باibsکه۳احتمالش و .شده تست هست تایی صدهزار و میلیون
.کنندتغییر هم نتایج ،آزمایش ایطرشتغییر با که هست
MongoDB innfinision.net
40. MongoDB
.گرفته انجام نوشتم که پایتونی کد با ها تست این
یا کش بصورت داده مونگو خود شیوه به ایمپورت درbulkزمان در۲:۱۴ایمپورت نوع در و برد زمان
کامند از استفاده با و خودم کد از استفاده برد.)بدون زمان ساعت نیم بالی تکیmongoimport(
ماژول از استفاده بازیر نتایج ولیMongoDriver.میباشد
که مواقعی اینکه جالب نکتهqueryتا ،میشود داده گشتبرسریعتر نتیجه میباشدبیشتر شروط با
که مواقعیquery.میباشدکمتر شرط با
innfinision.net