وقتی پروژه شما نیاز به انعطاف بیشتر داره یا حجم داده بزرگه، شاید MongoDB انتخاب بهتری از MySQL باشه. تو این مقاله MongoDB رو معرفی میکنم.
NoSQL چیه؟
Not Only SQL. دیتابیسهایی که برخلاف SQL کلاسیک، Table و Row ندارن. انواع:
- Document (MongoDB)
- Key-Value (Redis)
- Column-family (Cassandra)
- Graph (Neo4j)
MongoDB چیه؟
Document Database که داده رو به شکل JSON (BSON در اصل) ذخیره میکنه. Schema-less و انعطافپذیر.
ساختار
Database: مثل MySQL
Collection: مثل Table
Document: مثل Row، ولی JSON
مزایا
Schema Flexibility: هر Document میتونه ساختار متفاوت داشته باشه.
Horizontal Scaling: Sharding داخلی. حجم زیاد قابل مدیریت.
JSON Native: برای JavaScript و Node.js عالی.
Fast Development: Schema Migration نداره.
Aggregation Pipeline: قوی و قابل انعطاف.
Replication: Replica Set پیشفرض.
معایب
Transaction محدود: تا ورژن 4.0 نبود. الان هست ولی محدود.
JOIN ندارد: Aggregation Lookup هست ولی کند.
حجم بیشتر: Field names در هر Document تکرار میشن.
Consistency: Eventual Consistency، نه Strong.
Learning Curve: اگه از SQL میاید، فکر متفاوت.
کاربردهای MongoDB
Content Management: Blog، CMS با ساختار متغیر.
IoT: Sensors با فرمتهای مختلف.
Real-time Analytics: حجم بالای داده.
Mobile Apps: Backend سریع.
Product Catalog: محصولات با خصوصیات متغیر.
User Profiles: پروفایل با فیلدهای دلخواه.
نصب MongoDB
Ubuntu: apt install mongodb-org
Docker: docker run -d --name mongo -p 27017:27017 mongo
CRUD Operations
Insert: db.users.insertOne({name: mohammad, age: 30});
Read: db.users.find({age: {gt: 25}});
Update: db.users.updateOne({name: mohammad}, {set: {age: 31}});
Delete: db.users.deleteOne({name: mohammad});
Indexing
db.users.createIndex({age: 1});
db.users.createIndex({name: text});
Aggregation
db.orders.aggregate([
{match: {status: complete}},
{group: {id: customer, total: {sum: amount}}},
{sort: {total: -1}}
]);
Replica Set
یه Primary + چند Secondary. Automatic failover.
Sharding
داده رو بین چند سرور تقسیم میکنه. مقیاسپذیری بینهایت.
MongoDB Atlas
Cloud Managed از MongoDB. رایگان تا 512MB.
Framework Support
Node.js: mongoose. Python: pymongo. PHP: mongodb driver. Java: mongodb-driver.
MongoDB vs MySQL
Schema: MongoDB انعطاف، MySQL سختگیر.
JOIN: MySQL قوی، MongoDB ضعیف.
Scale: MongoDB افقی، MySQL عمودی.
Transaction: MySQL قوی، MongoDB محدود.
Best for: MongoDB: JSON data، big data. MySQL: Relational data، Transactional.
GUI Tools
MongoDB Compass: رسمی، رایگان.
Studio 3T: حرفهای، پولی.
Robo 3T: ساده.
سباهاست پشتیبانی
سباهاست VPS با MongoDB نصب شده ارائه میده.
معروفترین کاربرها
eBay، Adobe، Google، Facebook.
Cost
Community Edition رایگان. Enterprise پولی.
جمعبندی
MongoDB انتخاب عالی برای پروژههای مدرن با JSON و حجم بالا. اگه نیاز به Transaction قوی نیست، MongoDB سریعتر پیشرفت میده.