Giper Baza একটি আলাদা, ঐচ্ছিক প্রকল্প——এটি $mol-এর অন্তর্নির্মিত অংশ নয়। এর নির্মাতারা এটিকে বর্ণনা করেন দ্বন্দ্বমুক্ত রিয়েল-টাইম সিঙ্ক সহ একটি বিকেন্দ্রীভূত, উচ্চ-লভ্য ডেটাবেস হিসেবে: একটি CRDT স্টোর যা স্থানীয়ভাবে টিকে থাকে এবং কেন্দ্রীয় সার্ভার ছাড়াই ক্লায়েন্টের মধ্যে রেপ্লিকেট হয়, ডিজিটাল স্বাক্ষর ও এন্ড-টু-এন্ড এনক্রিপশন সহ। $mol অ্যাপ বানাতে এটি কখনোই প্রয়োজন হয় না; কেবল তখনই এটি ব্যবহার করুন যখন একাধিক ক্লায়েন্ট বা ডিভাইসকে একই লাইভ ডেটা ভাগ করতে হবে।শুধু চান আপনার অ্যাপ নেটওয়ার্ক ছাড়াই কাজ করে যাক? সেটি নিছক অফলাইন, আর $mol একটি service worker দিয়ে তা সামলায়——অফলাইন দেখুন। Giper Baza তার পরের ধাপ: একটি ক্লায়েন্টের সম্পদ ক্যাশ করা নয়, বরং ক্লায়েন্টের মধ্যে ডেটা সিঙ্ক করা।আপনি যখন সত্যিই এটি দিয়ে ডেটা মডেল করেন, এনটিটিগুলো সাধারণ রিয়্যাক্টিভ প্রপার্টির মতোই দেখায়, আর রেপ্লিকেশন এমনিই ঘটে।এই পৃষ্ঠা API-এর আকৃতি পরিচয় করায়। Giper Baza একটি বড় বিষয়——এটিকে একটি মানচিত্র হিসেবে ধরুন, সম্পূর্ণ ভূখণ্ড নয়।
একটি এনটিটি হলো একটি বিশুদ্ধ স্কিমা——টাইপড ফিল্ডের একটি সেট। আচরণ এর বাইরে রাখুন; পড়া ও লেখা আপনার ভিউতে করুন।1namespace ${2export class $my_taskextends$giper_baza_entity.with({3Title:$giper_baza_atom_text,4Done:$giper_baza_atom_bool,5CreatedAt:$giper_baza_atom_time,6}){}7}প্রতিটি ফিল্ড একটি অ্যাটম——একটি টাইপড মানসহ একটি সিঙ্ক করা সেল।
স্টোরটি নিন, এনটিটির একটি তালিকায় পৌঁছান, এবং সেগুলোর ওপর রিয়্যাক্টিভভাবে ম্যাপ করুন:1@ $mol_mem2tasks(){3return this.tasks_list().remote_list()4}56@ $mol_mem_key7task_done(id:string,next?:boolean){8const task=this.task(id)9if(next!==undefined)task.Done(null)!.val(next)10return task.Done()?.val()??false11}Done()?.val() পড়লে বর্তমান মান পাওয়া যায়; Done(null)!.val(next) লিখলে তা সেট হয়। ওই অ্যাটম পড়ে এমন যেকোনো ভিউ পুনরায় রেন্ডার হয় যখন এটি——বা একটি রিমোট পিয়ার——এটি বদলায়।