شما در برنامه نویسی همیشه دنبال این هستید که یک لایه واسطه ماژولار درست کنید که برای اتصال به بانک و نوشتن و خواندن از این کلاس واسط استفاده کنید.
خب چنین چیزی در برنامه نویسی relational که از دیتابیس های relational پشتیبانی میکند را ORM میگویند
حالا اگر همکار شما بگوید بیایید چنین واسطه ای شبیه به آن را برای دیتابیس های nosql یا graph بنویسید چه میگویید؟
اگر من لایه انتزاعی ای برای دیتابیس های گراف یا nosql بنویسیم که شبیه orm عمل کند اسم آن را چه چیزی بگذاریم؟
برای یک لایه انتزاعی برای دیتابیسهای گراف یا NoSQL که شبیه ORM عمل میکند، میتوانید از عبارت ODM (Object-Document Mapper) استفاده کنید. ODM همانند ORM، به شما این امکان را میدهد تا به صورت شیگرا با دادههای دیتابیسهای NoSQL و گرافی برخورد کنید. به عنوان مثال، برای دیتابیس گراف Neo4j، از نسخه OGM (Object-Graph Mapper) به عنوان ODM استفاده میشود.
ODM یا Object-Document Mapper وظیفه مشابه ORM برای دیتابیسهای رابطهای دارد، با این تفاوت که به جای کار با جداول و ردیفهای آنها، با دادههایی همچون سند، شی، گراف و... در دیتابیسهای NoSQL کار میکند. ODM نیز مانند ORM، به شما این امکان را میدهد تا در برنامهنویسی شیگرا با دیتابیسهای NoSQL برخورد کنید و از ویژگیهای شیگرایی مانند ارثبری، پلیمورفیسم و... استفاده کنید.
برای مثال، برای دیتابیس گراف Neo4j، از نسخه OGM به عنوان ODM استفاده میشود. OGM به شما این امکان را میدهد که با استفاده از کلاسهایی که به شیهای گرافی متناظر میشوند، به دادههای گرافی در دیتابیس Neo4j دسترسی داشته باشید و به راحتی بتوانید با آنها کار کنید.
به طور کلی، استفاده از ODM برای دیتابیسهای NoSQL، به شما این امکان را میدهد که بدون نیاز به کد نویسی پایینسطح و با استفاده از ویژگیهای شیگرایی، به دادههای NoSQL در دیتابیسهایی همچون MongoDB، Couchbase، Cassandra و... دسترسی داشته باشید و با آنها کار کنید.
با استفاده از ODM، شما میتوانید به دادههایی که در دیتابیسهای NoSQL ذخیره شدهاند، به صورت شیگرا دسترسی داشته باشید و با استفاده از ویژگیهای شیگرایی مانند ارثبری، پلیمورفیسم و...، این دادهها را به صورت آبسترهای در برنامهی خود مدیریت کنید.
در ODM، هر کلاس به یک نوع دادهای در دیتابیس NoSQL مرتبط است. به عنوان مثال، در دیتابیس MongoDB، هر کلاس میتواند متناظر با یک مجموعه اسناد در دیتابیس باشد. در ODM، شما میتوانید به کلاسهای خود ویژگیهایی مانند فیلدها، متدها و روابط بین کلاسها اضافه کنید و این ویژگیها را به صورت شیگرا در برنامهی خود استفاده کنید.
همچنین، ODM به شما این امکان را میدهد که از ویژگیهایی مانند lazy loading و eager loading برای بهینهسازی درخواستهای به دیتابیس استفاده کنید. همچنین، ODM برای شما امکاناتی مانند اعتبارسنجی دادهها، تراکنشها و... را فراهم میکند.
در مجموع، ODM به شما امکان ایجاد یک لایه انتزاعی برای دیتابیسهای NoSQL را میدهد که به شما این امکان را میدهد که به صورت شیگرا با دادههای NoSQL در دیتابیسهایی همچون MongoDB، Couchbase، Cassandra و... کار کنید.