Nasser Niazy
Nasser Niazy
خواندن ۲ دقیقه·۳ سال پیش

بررسی انواع دیتابیس ها براساس مکان و ساختار

بر اساس مکان نگهداری 
#Centralized database
هسته دیتابیس روی یک ماشین قرار دارد. 
#Cloud database
دیتابیس روی سرویس های ابری میزبانی می شود و پایداری آنها بسیار بالاست
#Distributed database
دیتابیس روی چند سرور توزیع شده و برحسب نوع توزیع شدگی می تواند پایداری بالایی را ارائه کند. 
#standalone
دیتابس کنار اپ مثل 
#sqlite , #access , #mssqlce
بر اساس ساختار دیتا مدل
#relationaldatabases
پایگاه داده های رابطه ای که مرسوم ترین نوع پایگاه داده هستند و تفاوت خیلی عظیمی بین مدل های مختلف آنها نیست و داده ها را درجدول های مربوط به هم ذخیره می کنند
مثال
#oracle
#mssqlserver
#mysql
#postgresql
را می توان اشاره کرد
#nosql
دیتابیس های غیررابطه ای را با این کلمه مشخص می کنند ولی دقیق نیست چون برخی از این دیتابیس ها حدودی از دستورات اس کیو ال را پشتیبانی می کنند مثل 
#clickhouse , #Cassandra
خود دیتابیس های 
#nosql
به دسته های زیر تقسیم می شوند
#keyvalue
در این دیتابیس ها یک کلید اصلی داریم که می توانیم با این کلید یک دیتا را بازیابی کنیم. نوع دیتای مورد پشتیبانی عمومآ از نوع متنی جیسون و آرایه می باشد 
معروف ترین نوع این دیتابیس 
#redis,#dynamo
است و از اصلی ترین کاربرد آنها کش دیتای پرکاربرد روی مموری است. 

#column base 
این نوع دیتابیس ها هم همان 
key-value 
است با این تفاوت که 
value 
می تواند ساختار داشته باشد . برحسب این که ساختار آن استاتیک باشد یا داینامیک به دو نوع 
wide-column
مثل  
#cassandra , #bigtable,#hbase, #clickhouse , #influxdb
و داکیومنت بیس مثل 
#mongodb, #elasticsearch , #couchdb
می توان تقسیم کرد.
داکیومنت بیس ها هم مثل کلید ولیو هستند ولی ولیو می تواند ساختار انعطاف پذیر(بدون ساختار) داشته باشد 
نوع ستون مبنا تفاوت اساسی با دیتابیس رابطه ای دارد به این صورت که مثلآ در مای اس کیو ال هر جدول در یک فایل ذخیره می شود ولی در دیتابیسی مثل 
#clickhouse
هر ستون در یک فایل ذخیره می شود . این باعث می شود این نوع از دیتابیس ها سرعت وحشتناکی در ذخیره و بازیابی دیتاها داشته باشند زیرا ذخیره و بازیابی هر دیتا 
می توان با تردهای موازی انجام داد ولی بزرگترین چالش در این نوع از دیتابیس ها آپدیت ودلیت دیتا می باشد به صورتی که 
#clickHouse
از دلیت و آپدیت پشتیبانی نمی کند ! و کاسندرا آن را به سختی پیاده کرده است . 
در واقع دیتاهای پردازش نشده مثل لاگ ها مناسب ترین نوع دیتا برای ذخیره در دیتابیس های 
#column-base
است .بطوریکه برحسب استفاده به نوع دیگری نیز تقسیم می شوند به نام 
#timeseries
که برای ذخیره سازی لاگ و متریک طراحی شده است و کلید این دیتاها می تواند براساس ترکیبی از زمان و هش یکی از ستون ها باشد .معمولآ حجم دیتا ذخیره شده پایین است
و سرعت در ماکزیمم حالت خود است. از دیتابیس های این دسته می توان به 
#clickhouse, #druid, #influxdb, #pinot
اشاره کرد. 
نوع دیگر 
#nosql
ها دیتابیس های گراف پایه است که در آن دیتا ها روی نود ها ذخیره می شوند و بین نود ها ارتباط های متفاوت می توان تعریف کرد که ارتباط می تواند یک طرف - جهت دار / دو طرفه و وزن دار باشد . ذخیره روابط بین کاربران یک شبکه اجتماعی یا داده های ترافیکی و مسیریابی بهترین نمونه کاربرد این دیتابیس هاست 
#neo4j, #dgraph

مقاله دیگر بنده در مورد آشنایی بیشتر با دیتابیس neo4j <br/>
رفرنس ها 
Designing Data-Intensive Applications
Design Patterns for Cloud-Native Applications (chapter 4,6)

software archetecturedatabasedatabase designnosql
بیش از ۱۰ سال سابقه برنامه نویسی وب و سیستم های پیچیده. معماری و رهبری پروژه های بزرگ نرم افزاری.
شاید از این پست‌ها خوشتان بیاید