آن چه در این مقاله خواهید خواند:
مقدمه ای بر Spring Data Framework: ضرورت نیاز به Spring Data Framework
من ارسلان میربزرگی هستم و آیا میدانید چرا Spring Data Framework طراحی شده است؟ در دنیای دیجیتال بیش از 20ZB (Zettabyte) داده وجود دارد و این حجم داده به اندازه تمام ستاره های دنیا است. این دادهها از منابع مختلفی مانند بانکداری، خردهفروشیها، کسب و کارهای الکترونیک، آموزش، ساخت و ساز، سایتهای شبکههای اجتماعی و غیره ایجاد میشوند و به دو شکل ساختاریافته و بدون ساختار در دسترس هستند.
هزینه ایجاد، جمع آوری، ذخیره و مدیریت این داده ها مهمترین چالش برای صنعت فناوری اطلاعات است. نرم افزارها و framework های زیادی در بازار عرضه شده اند که تا حدی به حل این مشکل کمک کرده اند؛ اما در این framework ها و نرم افزارها همچنان مسائل زیر وجود دارند:
- توسعه نوشتن در RDBMS بسیار دشوار و حتی غیرممکن است.
- توسعه پذیری آنها به صورت عمودی یا افقی هم دارای محدودیتهایی است و هم هزینه بر است.
دادههای NoSQL به عنوان یک راهکار موجب تغییر داده ها از حالت ACID (قابلیت تجزیه، انسجام، جداسازی و دوام) به حالت BASE (دسترسی اصولی، توسعه پذیری، سازگاری به موقع) شده اند و مشکلات فوق را حل کرده اند. NoSQL یک فرآیند پیوسته، و به توسعه دهندگان پایگاههای داده non-relational کمک میکند تا از ابزار مناسب برای کار استفاده کنند. علاوه بر داده های Big Data ،NoSQL هم وجود دارد.
Big Data به مجموعه ای از داده ها گفته میشود که مقدار آن فراتر از قابلیتهای ابزارهای موجود در یک نرم افزار پایگاه داده معمولی برای جمع آوری، ذخیره، مدیریت و تجزیه و تحلیل داده ها است. حجم Big Data در هر صنعتی، تقریباً از 10TB (ترابایت) تا چند PB (PetaByte) است.
بنابراین، مشخص است که چشم انداز دسترسی به داده ها به طور چشمگیری تغییر کرده است. RDBMS هنوز هم اهمیت دارد، اما دیگر نمیتوان از آن به عنوان یک شیوه برای تمام انواع داده ها استفاده کرد. با اینکه Spring Framework همیشه از دسترسی به داده ها از طریق RDBMS پشتیبانی میکند، اما برای دسترسی به سایر انواع داده ها (NoSQL و BigData) کمبودهایی دارد؛ بنابراین هدف از پروژه Spring Data این است که علاوه بر حفظ ابزارها و قابلیتهای خاص موجود، قابلیت پشتیبانی از Spring Data را برای انواع فناوریهای داده (دادههای relational، دادههای non-relational و Big Data) بهروزرسانی کند.
Spring Data Framework چیست؟
Spring Data Framework یک parent project است که بسیاری از framework های فرعی در آن جای دارند. تمام این framework های فرعی برای دسترسی داده ها در یک پایگاه داده خاص ایجاد شده اند. هدف از طراحی این framework، ارائه یک مدل مناسب و سازگار مبتنی بر اسپرینگ است تا قابلیت دسترسی به فناوریهای مختلف داده مانند پایگاههای داده relational یا non-relational، فناوریهای مبتنی بر cloud یا map-reduce frameworks فراهم شود.
در واقع framework اسپرینگ داده یک راه حل ابتکاری برای دسترسی آسان توسعه دهندگان Spring به داده های جدید NoSQL است. در ادامه تعداد زیادی از فناوریهایی که Spring Data از آنها پشتیبانی میکند، ارائه شده است:
1. Relational
- افزونه JPA
- افزونه JDBC
2. Non-Relational
- Redis
- Mongo
- HBase
- Neo4J
- Gemfire
- Lucene
3. Query DSL
- یک پروژه منبع باز مستقل است که type safety را برای اجرای query ها فراهم میکند.
4. Big Data
- Hadoop
- HDFS و M/R
- Hive
- Pig
- Cascading
معرفی چند ماژول محبوب منتشر شده در اسپرینگ داده
در ادامه برخی از ماژولهای مهم منتشر شده در پروژه اسپرینگ داده ارائه شده است:
- JDBC Spring Data
- Spring Data JPA
- Spring Data Commons
- Spring Data REST
- Spring Data KeyValue
- Spring Data MongoDB
- Spring Data LDAP
- Spring Data Redis
- Spring Data برای apache cassandra
- Spring Data برای Apache Solr
- Spring Data برای Apache Geode
- Spring Data برای pivotal GemFire
در حال حاضر، ماژول Spring Data R2DBC در حال توسعه است. ویژگیهای این ماژول عبارتند از:
- Repository Support
- تخصیص منابع و تفسیر مغایرتها از طریق قالبها
- ترسیم Object/Datastore برای SQL و NoSQL data stores
- استخراج dynamic queries از repositories method name
- Transparent auditing support
در بخش زیر تعدادی از اصطلاحات اصلی و تعاریف کاربردی در Spring Data framework ارائه شده است.
Repositories
- یک واسطه میان data mapping layers و دامنه برای دسترسی به domain objects است و این کار را از طریق یک collection-like interface انجام میدهد
- POJO را ایجاد میکند که model یا entity شما خواهد بود
- یک repository interface را برای عملیات CRUD توسعه میدهد و query methods را اضافه میکند
- Spring را برای اسکن repository interfaces و ایجاد implementations پیکربندی کنید
- implementations را در services شما قرار میدهد
QueryDSL
دسترسی به ایجاد type-safe SQL را مانند query ها برای چند Backend از جمله MongoDB، Lucence، JPA، JDO، SQL و plain collection در جاوا فعال میکند.
مدلهای داده NoSQL
مدلهای داده NoSQL معمولاً کلید-مقدارها را نمایش میدهد و بیشتر به صورت JSON یا نمودارها مستند میشوند.
Redis
Redis یک framework ذخیره سازی مداوم است که به عنوان ابزار ذخیره سازی ترکیب key-value عمل میکند. این framework دارای ابزارهای زیادی است و از مجموعهای غنی از انواع دادهها (استرینگ، باینری، لیستها، مجموعهها، OrderedSets، HashMap و غیره) پشتیبانی میکند. Redis میتواند یک تصویر فوری را به طور متناوب از حافظه بگیرد و دستورات را به یک فایل log اضافه کند.
HBase
یک پایگاه داده ستون گرا است. Row در این پایگاه ستونی است که ترکیبهای key-value در آن وجود دارد. ستونها را میتوان در ستونهای مشابه گروه بندی کرد.
MongoDB
یک پایگاه داده منبع باز، توسعه پذیر، با کارایی بالا و سند محور به سبک JSON است که اسناد را در کالکشنها سازماندهی میکند. این پایگاه داده به عنوان یکی از زبانهای rich query برای dynamic queries شناخته شده است؛ و دارای ابزارهای جغرافیایی است.
Graphs
Graphs یک ساختار داده همه منظوره است. Graphs در context of data به معنای نمودارها، دیاگرام یا بردار ترسیم شده نیستند، بلکه در حوزه تخصصی خود برای ذخیره سازی داده ها به صورت نمودار ایجاد شده اند.
نتیجه گیری
در نهایت میتوان نتیجه گرفت که اسپرینگ داده یک پروژه جامع است که با هدف یکپارچگی و سهولت دسترسی به انواع سیستمهای پایگاه داده طراحی شده است.