یکی از عجایب امروزه این است که روزانه صدها میلیون ترابایت داده تولید میشود و این آمار به طور میانگین همیشه در حال افزایش است. باتوجهبه ماشینیشدن زندگی امروزه و ایفای نقش مهم اینترنت و تکنولوژی در زندگی روزمره ما، انواع مختلفی از داده به ثبت میرسند. از مشخصات فردی و کاربری افراد گرفته تا ثبت اطلاعات مربوط به حرکت ماشینها و ضربان قلب بیماران که بهوسیله اینترنت اشیااینترنت اشیا iot چیست ⚡️ اینترنت اشیا چیست به زبان سادهاین مقاله عالی معرفی کرده اینترنت اشیا iot چیست و چه کاربردی دارد و تاریخچه IoT، حوزه های کاربرد اینترنت اشیا و مزایا و معایب اینترنت اشیا را بررسی کرده به ثبت میرسند. ذخیره، دستهبندی، مدیریت، تحلیل و بررسی این دادهها کار بسیار دشوار و هزینهبری است. ازآنجاکه ماهیت دادهها و هدف از ذخیره و بررسی آنها میتواند بسیار متفاوت باشد، تاکنون شیوههای مختلفی برای ذخیره و مدیریت این دادهها به وجود آمده است.
بهطورکلی دادهها درون پایگاه دادهپایگاه داده چیست؟ – انواع، مفاهیم و کاربردهاپایگاه داده چیست؟ این مقاله به بررسی این موضوع و همچنین انواع پایگاه داده، کاربردهای پایگاه داده، محبوب ترین پایگاه های داده و اجزای اصلی پایگاه داده پرداخته ها ذخیره میشوند و هر پایگاه دادهای، ابزاری برای مدیریتکردن آن، تعامل با پایگاه داده و امنیت اطلاعاتامنیت اطلاعات چیست؟امنیت اطلاعات چیست و چرا امنیت اطلاعات مهم است؟ این صفحه عالی روشهای ایمن سازی و پیشگیری از اطلاعات را شرح داده و انواع داده ها از نظر امنیت را توضیح داده ایجاد میکنند. یکی از معروفترین این سیستمها سیستم مدیریت پایگاه دادهمدیریت پایگاه داده یا DBA چیستمدیریت پایگاه داده یا DBA چیست؟ این صفحه عالی به معرفی نقش و وظایف مدیر پایگاه داده و بررسی پیش نیازهای تبدیل شدن به مدیر پایگاه داده پرداخته است رابطهای یا RDBMS است.
انواع پایگاه داده ها
تاکنون مدلهای مختلفی از پایگاه دادهها ایجاد شده است. معروفترین نوع پایگاه داده به دو مدل ساختاریافته و غیرساختاریافته یا نیمهساختاریافته تقسیم شدهاند. پایگاهدادههای ساختاریافته که از زبان SQL برای پرسوجو استفاده میکنند، همان پایگاهدادههای ساختاریافته هستند. این پایگاهدادهها از جداول و روابط بین آنها تشکیل شدهاند و دادهها برای اساس همان جداول وارد سیستم پایگاه داده میشوند. از طرف دیگر پایگاهدادههای NoSQL را داریم که دیگر دارای جدول نمیباشند و هیچ اجباری بر پیروی از الگوی از پیش تعیین شده برای ثبت دادهها وجود ندارد. این مدلهای پایگاه داده دارای زیرمجموعههای مختلفی هستند که هرکدام ویژگیهای مخصوص به خود را دارند.
پایگاه داده های رابطه ای یا SQL
گفتیم که پایگاهدادههای رابطهای از جدولها و روابط بین آنها تشکیل شدهاند. در این قسمت میخواهیم به انواع مثالها برای این نوع پایگاه داده و روابط بین جدولها بپردازیم. ابتدا به مثال زیر توجه کنید:
City | Age | Name | ID |
---|---|---|---|
Tehran | 25 | Ali | 1 |
Rasht | 30 | Reza | 2 |
Mashhad | 28 | Sara | 3 |
Shiraz | 22 | Bardia | 4 |
San Francisco | 27 | Negin | 5 |
همانطور که مشاهده میکنید، این یک جدول مربوط به اطلاعات افراد است که از 4 ستون (column) ساخته شده و 5 رکورد بهصورت سطر (row) در آن ذخیره شده است. هر جدول دارای یک شناسه منحصربهفرد (معمولاً با نام id شناخته میشود) با نام primary key یا کلید اصلی است که بهوسیله آن، موجودیتهای مختلف یک جدول از یکدیگر تمیز داده میشوند؛ همچنین یک جدول میتواند دارای هر تعداد کلید خارجی یا foreign key باشد که به کلیدهای اصلی جداول دیگر اشاره میکند. در مورد کلید خارجی جلوتر بحث میکنیم.
یکی از مهمترین بحثها در مورد طراحی پایگاهدادههای ساختاریافته، مباحث ارتباطات بین جداول است که در این قسمت میخواهیم به این مورد بپردازیم:
روابط یک به یک
ارتباط بین موجودیت (entity) های جدولها در روابط یک به یک به این صورت است که هر سطر از جدول اول، تنها با یک سطر از جدول دوم رابطه دارد و برعکس؛ هر سطر از جدول دوم نیز تنها با یک سطر از جدول اول رابطه دارد.
مثال برای روابط یک به یک
یک مثال برای روابط یک به یک در پایگاهدادههای رابطهای، جدول کد ملی و جدول افراد یک کشور است. هر فرد تنها یک کد ملی دارد و هر کد ملی تنها مختص به یک نفر است.
روابط یک به چند
در روابط یک به چند، موجودیت در جدول اصلی قادر است با تعداد بینهایت موجودیت در جدول فرعی رابطه داشته باشد؛ اما هر موجودیت در جدول فرعی تنها مربوط به یک موجودیت در جدول اصلی است و نمیتواند به بیش از یک موجودیت مربوط شود.
مثال برای روابط یک به چند
یکی از مثالهای ساده و ملموس برای روابط یک به چند، سفارشهای یک فروشگاه آنلاین است. یک کاربر در یک فروشگاه میتواند سفارشهای متعددی داشته باشد. مثلاً کاربری یکبار یک لپتاپ سفارش میدهد و فردا تصمیم میگیرد که یک کیبورد نیز سفارش دهد. در اینجا یک کاربر توانسته چند موجودیت سفارش داشته باشد؛ اما هر سفارش تنها متعلق به یک کاربر است و نمیتواند همزمان مربوط به 2 کاربر باشد.
روابط چند به چند
از دیگر انواع روابط بین موجودیتهای پایگاه داده رابطهای میتوان به روابط چند به چند اشاره کرد. در روابط چند به چند همانطور که از نامش پیداست هر موجودیت از جدول اول میتواند با چند موجودیت در جدول دوم در ارتباط باشد و هر موجودیت در جدول دوم نیز میتواند همزمان با چند موجودیت از جدول اول رابطه داشته باشد. نکتهٔ مهمی که در روابط چند به چند مطرح است، وجود یک جدول واسط برای ارتباط بین دو جداول اول و دوم است. دلیل این امر هم بسیار واضح است؛ ازآنجاییکه تعداد ارتباطها میتواند بینهایت باشد، نمیتوان بینهایت ستون جدید برای هر موجودیت ساخت؛ بنابراین ارتباط دو موجودیت را بهوسیلهٔ یک جدول جداگانه نشان میدهیم. شکل زیر حاکی از این موضوع است.
مثال برای روابط چند به چند
در مثال فروشگاه آنلاینی که پیشتر بحث کردیم، فرض کنید دو جدول با نام مشتری و محصول در اختیار داریم. هر مشتری میتواند هر محصول را سفارش دهد و هر محصول میتواند توسط مشتریان زیادی خریداری شود. در اینجا باید از یک جدول واسط استفاده کنیم تا در آن شناسهٔ مشتری و شناسهٔ محصول را بهعنوان کلید خارجی در آن قرار دهیم و نشان دهیم کدام مشتری کدام محصول را سفارش داده است؛ همچنین قادر هستیم تا ستونهای بیشتری ایجاد کنیم؛ بهعنوانمثال میتوانیم تعداد محصول سفارش داده شده را در ستون quantity ذکر کنیم.
در تصویر بالا مشاهده میکنید که customer با شناسه 1 توانسته با 2 موجودیت از جدول product با شناسهٔ 2 و 3 ارتباط داشته باشد؛ همچنین موجودیت با شناسهٔ 2 از جدول product نیز توانسته با دو موجودیت با شناسهٔ 1 و 2 از جدول customer ارتباط داشته باشد.
پایگاه داده های غیر رابطهای یا NoSQL
یکی دیگر از انواع مدل پایگاه داده که امروزه بسیار موردتوجه برنامهنویسان و دانشمندان داده قرار گفته است، پایگاهدادههای NoSQL است. پایگاهدادههای غیررابطهای یا NoSQL دیگر از یک ساختار خاص همانند جدولها پیروی نمیکنند؛ بلکه اطلاعات را به صورتهای دیگر مانند فایلهای JSON که در زبانهایی نظیر جاوا اسکریپتجاوا اسکریپت چیست؟ معرفی زبان برنامه نویسی java scriptزبان برنامه نویسی جاوا اسکریپت چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای JavaScript پرداخته و مبانی برنامه نویسی جاوا اسکریپت را آموزش داده و پایتونزبان برنامه نویسی پایتون چیست؟ – نحوه شروع و دلایل محبوبیتزبان برنامه نویسی پایتون (Python) چیست؟ این مقاله عالی به بررسی دلایل محبوبیت پایتون، موارد استفاده از پایتون و نحوه شروع به برنامه نویسی پایتون پرداخته بسیار محبوب است و یا XMLXML یا زبان نشانه گذاری توسعه پذیر چیست؟ فایل xml چیست؟XML مخفف Extensible Markup Language به معنای زبان نشانه گذاری توسعه پذیر است، در این مقاله عالی سولاتی نظیر فایل xml چیست و کاربرد فایل xml چیست پاسخ داده شده نگهداری میکنند؛ بنابراین دو موجودیت در یک سند (document) میتوانند تفاوتهای بسیار زیادی با یکدیگر داشته باشند؛ مثلاً دارای پارامترهای اضافهتری باشند و یا نوع ساختمان دادهٔ یک موجودیت متفاوتتر از بقیه باشد.
مثال برای پایگاه داده غیر رابطه ای
در اولین جدولی که در این مقاله آورده شد یک نمونه از جدول مربوط به اطلاعات افراد را مشاهده کردید. میخواهیم همین مثال را بر روی یک سند یا document مربوط به پایگاه داده غیررابطهای پیادهسازی کنیم. اگر از فرمت JSON برای پیادهسازی سند مربوط به اطلاعات افراد استفاده کنیم، کد آن بهصورت زیر در خواهد آمد:
[
{
"id": 1,
"name": "Ali",
"age": 25,
"city": "Tehran"
},
{
"id": 2,
"name": "Reza",
"age": 30,
"city": "Rasht"
},
{
"id": 3,
"name": "Sara",
"age": 28,
"city": "Mashhad"
},
{
"id": 4,
"name": "Bardia",
"age": 22,
"city": "Shiraz"
},
{
"id": 5,
"name": "Negin",
"age": 27,
"city": "San Francisco"
}
]
همانطور که مشاهد میکنید دیگر خبری از جدول نیست.
مثالی از روابط در پایگاه دادههای غیر رابطه ای
در پایگاهدادههای NoSQL به دو صورت میتوان بین سندها ارتباط برقرار کرد:
- ارجاعدادن یا Referencing: همانند جدولهای واسط در پایگاهدادههای SQL است. یعنی در آن از یک سند واسط استفاده میکنیم.
- روش تعبیه شده یا Embedded: در این روش که بسیار در پایگاهدادههای NoSQL استفاده میشود درون خود سند میتوان دادههای مربوطه را اضافه کرد.
مثال برای روش Referencing
در مثال زیر میتوانید پیادهسازی این روش را مشاهده کنید:
"customers": [
{
"customer_id": 101,
"customer_name": "Hassan"
},
{
"customer_id": 102,
"customer_name": "Sara"
}
]
"products": [
{
"product_id": 1,
"product_name": "Laptop",
"price": 900
},
{
"product_id": 2,
"product_name": "Smartphone",
"price": 300
}
]
"purchases": [
{
"purchase_id": 201,
"customer_id": 101,
"product_id": 1,
"purchase_date": "2023-09-25"
},
{
"purchase_id": 202,
"customer_id": 101,
"product_id": 2,
"purchase_date": "2023-09-26"
},
{
"purchase_id": 203,
"customer_id": 102,
"product_id": 2,
"purchase_date": "2023-09-27"
}
]
همانطور که از سند فروش (purchases) میتوان دریافت، کاربر با شناسهٔ 101 یعنی Hassan، دو محصول با شناسهٔ 1 یعنی Laptop و 2 یعنی Smartphone را خریداری کرده است و کاربر با شناسهٔ 102 یعنی Sara نیز محصول با کد شناسهٔ 2 یعنی Smartphone را خریداری کرده است.
مثال برای روش Embedded
باتوجهبه اینکه سندهای پایگاهداده NoSQL از ساختار خاصی تبعیت نمیکنند و مقیاسپذیر هستند، میتوان جدول واسط را حذف کرده و آن را داخل سند مشتریان تعبیه کرد. این کار در پایگاهدادههای SQL امکانپذیر نبود؛ چرا که نمیتوان تنها برای یک رکورد، ستون جدید ایجاد کرد.
به مثال زیر توجه کنید:
"customers": [
{
"customer_id": 101,
"customer_name": "Hassan",
"purchases": [
{
"purchase_id": 201,
"product_id": 1,
"purchase_date": "2023-09-25"
},
{
"purchase_id": 202,
"product_id": 2,
"purchase_date": "2023-09-26"
}
]
},
{
"customer_id": 102,
"customer_name": "Sara",
"purchases": [
{
"purchase_id": 203,
"product_id": 2,
"purchase_date": "2023-09-27"
}
]
}
]
همانطور که مشاهده میکنید یک ویژگی جدید با نام purchases که در واقع یک سند جداگانه از نوع آرایه بود به داخل خود سند مشتریان اضافه شد و اکنون هر مشتری میتواند محصولات خریده شده توسط خود را درون همان سند مربوط به مشتریان نگهداری کند.
انواع مدل های پایگاه داده
تا اینجا دو مورد از مهمترین مدلهای پایگاه دادهای را بررسی کردیم، هر کدام از مدلهای پایگاه دادهای NoSQL و SQL، خود به زیرمجموعههای متعددی تقسیم میشوند که بد نیست از آنها اطلاع داشته باشید.
انواع پایگاه داده های SQL
پایگاه داده های رابطه ای
این پایگاهدادهها، دادهها را بهصورت جدولهای ساختاریافته ذخیره و از زبان SQL برای تغییر، ثبت، حذف و دریافت دادهها استفاده میکنند؛ از مثالهای مهم این نوع پایگاهداده میتوان به موارد زیر اشاره کرد:
- MySQL
- PostgreSQL
- Microsoft SQL Server
- Oracle Database
پایگاه داده های کلید مقدار بر پایه SQL
این پایگاهدادهها از رویکرد کلید - مقدار یا key-value برای ذخیره دادهها در محیطی ساختاریافته استفاده میکنند. مثالهای مهم این مدل پایگاه داده بهقرار زیر است:
- SQLite
- Apache Derby
انواع پایگاه داده های NoSQL
پایگاه داده سندگرا
این مدل پایگاهداده، دادهها را در سندهای نیمهساختاریافته ذخیره میکند که معمولاً فرمت آنها JSON یا BSON است. مثالهای مهم پایگاه داده سند گرا در لیست زیر آمده است:
- MongoDB
- Couchbase
- RavenDB
پایگاه داده کلید مقدار بر پایه NoSQL
همانند پایگاهداده کلید مقدار SQL است با این تفاوت که دادهها در فایلهای بدون ساختار ذخیره میشوند. مثال برای این مدل پایگاه داده:
- Redis
- Amazon DynamoDB
- Riak
پایگاه داده های ستون گرا
نوعی از پایگاهداده NoSQL است که دادهها بهجای ذخیره در سطرها (همانند جدول در SQL) در ستونها ذخیره میشوند. مثال برای این مدل پایگاه داده:
- Apache Cassandra
- HBase
پایگاه داده های گراف
پایگاهدادههای گراف نوعی از پایگاه داده NoSQL هستند که دادهها را در قالب گراف بهصورت گره و یال ذخیره میکنند. این نوع پایگاه داده معمولاً برای ارتباطات پیچیده و تحلیل آنها مورداستفاده قرار میگیرند. از مثالهای مهم این نوع پایگاه داده میتوان به موارد زیر اشاره کرد:
- Neo4j
- Amazon Neptune
جمعبندی
تاکنون تعداد بسیار زیادی از انواع مدل های پایگاه داده ساخته شده است. بعضی از آنها تفاوتهای بسیار زیادی باهم دارند و بعضی دیگر تنها در ویژگیهایشان با یکدیگر متفاوتاند. بسته به نوع نیاز یک سازمان و یک برنامه، نوع پایگاه داده مناسب، تشخیصدادهشده و سپس به کار گرفته میشود. در این مقاله مدلهای مختلف و بسیار مهم پایگاه داده را بررسی کردیم و مثالهایی برایشان آوردیم تا درککردن آن برای مخاطبین راحتتر باشد. هرچند که تعداد پایگاه دادهها بسیار زیاد است و تمامی مطالب و مثالهای آن در یک مقاله نمیگنجد، اما تا جای ممکن سعی بر آن شد تا مهمترین موارد مورد بررسی واقع شوند.
تفاوت پایگاه داده SQL و NoSQL در چیست؟
دو مدل مهم پایگاهداده های SQL و NoSQL از جنبههای زیادی با یکدیگر تفاوت دارند، اما مهمترین تفاوت آنها، رویکرد ذخیره و دستهبندی دادهها است. در پایگاهدادههای SQL، دادهها بهصورت ساختارهای منظم درون جدولها ذخیره میشوند؛ اما در پایگاهدادههای NoSQL دادهها درون سندهایی مانند JSON بهصورت بدون ساختار یا نیمهساختاریافته ذخیره میشوند.
مهمترین مثال برای پایگاه داده های SQL چیست؟
از مهمترین مثالهای مدل SQL میتوان به موارد زیر اشاره کرد:
MySQL- SQLite- PostgreSQL- SQL Server- Apache Derby- Oracle Database
مهمترین مثال برای پایگاه داده های NoSQL چیست؟
از مهمترین مثالهای مدل NoSQL میتوان به موارد زیر اشاره کرد:
MongoDB_ Couchbase_ RavenDB_ Redis_ Amazon DynamoDB_ Riak_ Apache Cassandra_HBase_ Neo4j_ Amazon Neptune