شاخه و زیر شاخه ها

تصاویر تصادفی

  • خانه تاریخی عباسیان
  • شب یلدا

مطالب تصادفی

C#

دوشنبه 19 مهر 1400

جدید ترین مطالب

ایران دو ، ولز صفر

تاپای جان، برای ایران. جام جهانی فوتبال ۲۰۲۲ قطر

جمعه 04 آذر 1401

سه‏ شنبه 01 آذر 1401

محبوب ترین مطالب

نقطه ضعف آدم های دلپاک

آدم های دلپاک بزرگترین نقطه ضعفی که دارن، اینه که فکر میکنن اطرافیانشونم همه مثل خودشونن.

سه‏ شنبه 18 آبان 1400

بهترین خودت باش!

تو مسئول خوب زندگی کردن خودت هستی و این خوب زندگی کردن رو به خودت بدهکاری! تو باید تصمیماتی بگیری که بهت قدرت بده و کمک کنه تا خودت و زندگیت رو بهبود ببخشی … انسان موفق کسی است ک ...

يکشنبه 10 بهمن 1400

service
دیتا مدل کاساندرا ، بخش اول

دیتا مدل ساختار دیتابیس و طراحی منطق آن را مشخص میکند. مشخص میکند که اطلاعات چگونه ذخیره میشوند . دسترسی ها به چه صورت هستند و موجودیت ها که اساس مفاهیم در بانک اطلاعات هستند مشخص میکند.

دیتا مدل کاساندرا و ویژگی های آن

 

دیتا مدل : ساختار دیتابیس و طراحی منطق آن را مشخص میکند. مشخص میکند که اطلاعات چگونه ذخیره میشوند . دسترسی ها به چه صورت هستند و موجودیت ها که اساس مفاهیم در بانک اطلاعات هستند مشخص میکند.

 

فرض کنید یک فروشگاه اینترنتی اطلاعات چندین سال خود را در بانک اطلاعاتی ذخیره کرده است. به شکل بالا دقت کنید. جداولی در این بانک وجود دارد برای ذخیره سازی مشتری ها، فروش ، فروشنده ، محصول ، خرید ، فروشگاه و آدرس ها…

 

حالا اگر بخواهیم اطلاعات فروش مربوط به یکی از فروشگاه ها در بازه زمانی مشخص از یک محصول خاص را از بانک اطلاعاتی بخوانیم کار بسیار دشواری خواهد بود. اطلاعات در جداول مستقل ذخیره شده اند و اینکه بتوانیم اطلاعات را بررسی کنیم و به خروجی مورد نظر دست پیدا کنیم بسیار دشوار و زمان بر است.

 

مدل سازی داده ها ( Database Modeling )

 

راه حل دستیابی سریع به اطلاعات انبوه که در جداول مختلف ذخیره شده اند استفاده از مدل سازی داده ها است. استفاده از مدل سازی داده ها باعث میشود ارتباط جداول کاملا مشخص شود.

 

فرایند تعریف و طراحی و تحلیل نیازمندی های داده ای برای پشتیبانی از فرایندهای کسب و کار در محدوده ای است که درون سیستم های اطلاعاتی سازمان تعریف شده است.

 

در این حالت وقتی به یک مطلب در یکی از جداول دسترسی داشته باشیم به راحتی ارتباط بین آن و دیگر جداول را در اختیار خواهیم داشت و به سرعت به لیست مطالب مورد نظر دست خواهیم یافت.


ویژگی های مدل سازی داده ها

 

Accurate : تمام داده ها به طور کامل و دقیق نمایش داده می شوند. برای مثال بازه مجاز ثبت عدد برای سن کارمندان از 18 سال است تا 60 سال. یا نام کاربری حتما به صورت رشته است و طول مشخصی دارد.

 

Detailed : به اندازه کافی دقیق است و جزئیات کاملی را ارائه میکند که توسط آن ، تیم فنی می تواند پایگاه داده فیزیکی را به صورت دقیق طراحی کند.

 

Significant : برای تعریف اهمیت و جایگاه مطالب، جداول رابطه ای، کلیدهای اولیه و خارجی استفاده می شود. در واقع ارتباط بین اشیاء را مدیریت می کند.

 


برای مدل سازی داده دو رویکرد اصلی استفاده میشود.


رویکرد پایین به بالا ( Bottoms Up Approach ) : در این رویکرد، بانک اطلاعاتی موجود است و با استفاده از ساختار بانک اطلاعاتی مدل ها را ایجاد میکنیم.


رویکرد بالا به پایین ( Top Down Approach ) : در این رویکرد، ابتدا مدل ها را ایجاد میکنیم و بعد بانک اطلاعاتی را از روی این مدل ها ایجاد میکنی.

 

انواع دیتا مدل

 

Conceptual Data Model : در دیتا مدل مفهومی، معنی دامنه رو مشخص میکنید. مشخص میکنیم که کدام بخش از محدوده کسب و کار را می خواهیم بررسی کنیم. دامنه و محدوده مدل مشخص میشود و قسمتی که مورد بحث قرار خواهد گرفت را تعیین میکنیم.

 

Logical Data Model : در دیتا مدل منطقی، به صورت تکنیکی به مدل نگاه می کنیم. اطلاعات فنی مانند طول و نوع فیلد ها و موارد مشابه مشخص می شود. در واقع در این بخش ما مدل مفهومی که طراحی شده است را به مدل فنی قابل استفاده تبدیل میکنیم. کلید های اصلی ، رابطه بین داده ها و Entity مدل ها تعریف می شوند.

 

Physical Data Model : در دیتا مدل فیزیکال، مشخص می کنیم که پیاده سازی فیزیکی به چه صورت است. میزان حافظه مورد نیاز ، فضای ذخیره سازی ، موارد مربوط به مدیریت بانک اطلاعاتی مشخص می شود.

 

مراحل Database Modeling

 

مرحله اول : Conceptual Data Model

Activity Model : بررسی و تهیه مدل بر اساس نوع فعالیت های مورد نیاز.

 

Detailed Data Requirements : بررسی جزئیات دیتای موجود یا مورد نیاز جهت تولید مدل مفهومی.

 

Create / Update Conceptual Data Model : با توجه به مدل و جزئیات به دست آمده مدل مفهومی را تولید می کنیم و اگر از قبل وجود داشت آن را بروزرسانی میکنیم.

 

نتیجه فعالیت های این مرحله مشخص شدن محدوده فعالیت دامنه ( Semantics Of Schema Scope ) است.

 

مرحله دوم : Logical Data Model

Technical Environment : انتخاب کردن مدل بانک اطلاعاتی که قرا راست پیاده سازی شود

 

Performance Consideration : بررسی و تحلیل کارایی سیستم و انتخاب نوع بانک اطلاعاتی بر اساس کارایی مورد نیاز. با توجه به مشخص کردن محدوده عملکرد ما در مرحله قبل در این مرحله می توانیم در این مورد تصمیم گیری کنیم.

 

Create / Update Logical Data Model : با توجه به مدل و سناریوی کارایی انتخاب شده ، دیتا مدل منطقی را تولید میکنیم و اگر از قبل وجود داشت آن را بروزرسانی میکنیم.

 

نتیجه فعالیت های این مرحله بدست آوردن موجودیت ها ( Subtypes/Entities ) ، ستون های جداول ( Attributes ) ، روابط بین جداول و کلید های اصلی و فرعی ( Relationships ) ، قواعد بین داده ها ( Integrity Rules ) است.

 

 

مرحله سوم : Physical Data Model

Business Data : بررسی اطلاعات فیزیکی مدل کسب و کار و ارائه به صورتی که قابل استفاده باشد.

 

Create / Update Physical Data Model : با توجه به اطلاعات فیزیکی ارائه شده ، دیتا مدل فیزیکال را تولید میکنیم و اگر از قبل وجود داشت آن را بروزرسانی میکنیم.

 

نتیجه فعالیت های این مرحله تولید جداول واقعی ( Tables ) ، ستون ها ( Columns ) ، کلید ها ( Keys Indices ) و تریگرها ( Triggers ) است.

 

Faster Performance : افزایش کارایی در عملکرد پایگاه داده

 

Better Documentation : مستند سازی سیستم بهتر و موثرتر انجام میشود.

 

Fewer Application Errors : تعداد خطاهای کمتر در برنامه . سیستم همانطور که با داده های کم کارایی خوبی دارد، در پردازش داده های زیاد هم به درستی فعالیت می کند.

 

Fewer Data Errors : خطاهای کمتر در داده ها . صحت داده ها بسیار بالاست و داده های اشتباه وارد سیستم نمی شود.

 

Higher Quality : کیفیت بالاتر میرود. داده های صحیح، سرعت بالا و خطای کم باعث افزایش کیفیت میشود.

 

Reduced Costs : کاهش هزینه ها در راه اندازی اولیه و نگهداری و مدیریت از بانک های اطلاعاتی.

 

Clearer Scope : با توجه مستند سازی بهتر، محدوده کار بسیار واضح است و تصمیم گیری بهتر و منطقی تر انجام میشود.

 

Risk Management : با توجه به همه قابلیت های ذکر شده می توانیم مدیریت ریسک بهتری داشته باشیم

 


مقایسه مدل RDBMS و دیتا مدل کاساندرا

 

Core Architecture

 

RDBMS : سیستم به صورت Master-Slave کار میکند. یعنی یک دیتابیس اصلی وجود دارد و باقی دیتابیس ها به آن متصل می شوند و دیتا دریافت میکنند. در این حالت اگر دیتابیس اصلی دچار مشکل بشود تاثیر مستقیم در عملکرد سیستم خواهد داشت.

 

Cassandra : سیستم به صورت Masterless کار میکند. هر کدام از Node ها می توانند یک Master باشند. در صورت خرابی هر یک از Node ها باقی Node ها می توانند جایگزین آن شوند.

 

High Availability

 

RDBMS : از Replication استفاده میشود. یعنی یک بانک اطلاعات دیگر در کنار بانک اصلی قرار میگیرد و سیستم طبق زمان بندی مشخص شده اطلاعات را در بانک دوم نسبت به بانک اصلی بروز رسانی می کند. در این حالت اگر فاصله های بین Replication زیاد باشد ، اگر Master دچار مشکل شود بخشی از اطلاعات که جدید تر از باقی اطلاعات هستند را از دست خواهیم داد. و اگر فاصله زمانی را کاهش دهیم بسیار زمان بر و هزینه بر خواهد بود.

 

Cassandra : با توجه به نوع معماری کاساندرا نیازی به Replication نیست و اطلاعات به صورت کامل بین Node ها بروز هستند.

 

Data Model

 

RDBMS : در این سیستم دیتا مدل کاملا ساختار یافته است. و تغییر ساختار بانک اطلاعاتی بسیار مشکل و زمان بر است. و در برخی از شرایط امکان پذیر نخواهد بود.

 

Cassandra : در کاساندرا دیتا مدل کاملا داینامیک هست و به راحتی قابل توسعه است.

 

Scalability Model

 

RDBMS : در این سیستم روش های محدود و خاصی برای این کار وجود دارد.

 

Cassandra : در این سیستم امکان استفاده از کلان داده فراهم هست و امکان توسعه پذیری به معنی واقعی فراهم هست و بدون محدودیت می توان انجام داد.

 

Multi Data Center Support

 

RDBMS : امکان پذیر نیست.

 

Cassandra : در کاساندرا امکان استفاده به دو صورت Multi Directional و Multi Cloud وجود دارد. به این معنی که می توانیم Data Center های متفاوت داشته باشیم.

 

Enterprise Search

 

RDBMS : برای بهینه شدن سرچ باید از Handled Via Oracle Search استفاده کنیم.

 

Cassandra : در این سیستم سرچ در سیستم Integrated است و نیازی به استفاده از ابزار مجزا وجود ندارد.

 

دیتا مدل کسندرا

Keyspace : دیتا مدل کاساندرا بر اساس مفهوم با عنوان Keyspace طراحی شده است. تمام اشیاء و داده ها که در کاساندرا وجود دارند داخل Keyspace قرار دارند. در واقع Keyspace همان پایگاه داده است.


از مواردی که در این قسمت وجود دارد Replication Factor است که تعداد و اطلاعات ماشین های کلاستر در آن نگهداری میشود .

 

Column Family : برای ذخیره سازی و مرتب سازی داده ها استفاده می کنیم. می توانیم آن را به جداول در بانک های رابطه ای تشبیه کنیم.

 

Row Key : رکورد هایی هستند که اطلاعات در آنها در ستون های عمودی شامل Column و Value ذخیره می شوند. هر کدام از این سطر ها Unic هستند.

 

CQL : زبان مورد استفاده در این معماری Cassandra Query Language است. که به صورت مخفف به آن CQL گفته میشود.


اهداف دیتا مدل کاساندرا

 

  • تمام Node های یک Cluster به میزان یک سانی دیتا در خود نگهداری می کنند.
  • کاهش تعداد Partition Read ها تا حد اقل ممکن.
  • بازدید دقیق از Partition ها برای پیاده سازی به صورتی که زمان اجرای کوئری به حداقل برسد.
  • کلان داده ها را نمی توان روی یک Partition تنها نگهداری کنیم.
  • با توجه به حجم داده و شرایط کوئری ها باید تعداد Partition ها متعادل گردند.
  • می توانیم برای بهینه کردن سیستم ابتدا Query ها را Model کنیم و سپس جداول را بر اساس Query ها مدلسازی کنیم.
  • کوئری ها و مدل ها باید طوری طراحی شوند که مصرف حافظه کاملا بهینه باشد.
  • ستون هایی که از نظر نوع داده با هم مشابه هستند در یک جدول ایجاد می شوند که دسترسی به آنها سریع تر و ساده تر باشد.

 

عناصر دیتابیس مدل کاساندا

 

Clusters : یک دربرگیرنده اصلی هست که Keyspace ها در آن قرار می گیرند. خارجی ترین ساختاری است که در کاساندرا مورد استفاده قرار میگیرد. با توجه به این که کاساندرا از روش حلقه ای برای نگهداری اطلاعات استفاده می کند بعضی وقت ها آن را Ring می نامند.

 

Keyspace : معادل بانک اطلاعاتی در پایگاه های رابطه ای است. یک نام و مجموعه ای از مشخصه ها را داراست. هر Keyspace حداقل دارای یک Column Family است.

 

Column Family : برای منظم سازی و کنار هم قرار دادن سطر ها با یک ساختار مشابه.

 

CQL Table : جداولی هستند که در Query Language کاساندرا مورد استفاده قرار می گیرند.

 

 

روش ایجاد Keyspace

 

برای دستور ایجاد Keyspace باید چهار پارامتر مشخص شود.

 

Keyspace Name : نام مورد نظر را در این قسمت قرار می دهیم. نام حداکثر می تواند 48 کاراکتر شامل حروف کوچک ، اعداد و آندرلاین باشد. حرف اول باید حتما عدد یا حرف باشد. نام Keyspace را نمی توانید بعد از ایجاد تغییر دهید.

 

Replication Strategy :  استراتژی Replication درون حلقه را مشخص میکند.

 

Replication Factor : تعداد ماشین هایی که قرار است دیتا روی آنها نوشته شود.

 

Durable Writes : اگر این پارامتر را True در نظر بگیریم تمامی مطالبی که اضافه یا بروزرسانی می شوند حتی اگر موفق هم نباشند در لاگ ذخیره می شوند.

 

سید احمد ایمانی
ارسال توسط : سید احمد ایمانی

سرپرست تیم، مدیر پروژه و برنامه نویس ارشد. بیش از 20 سال تجربه فعالیت در زمینه های مختلف برنامه نویسی و تولید نرم افزار. سرپرستی واحد های پشتیبانی، IT، مالتی مدیا، نرم افزار. مدیریت پروژه های چند رسانه ای، تعاملی، آزمون، وب سرویس، وب سایت و برنامه های ویندوزی. برنامه نویسی سمت سرور، کلاینت، پایگاه داده، سرویس و چند رده