প্রকল্প সম্পর্কে
HydraDB হলো Rust-এ বাস্তবায়িত একটি অবজেক্ট-স্টোর-নেটিভ ডিস্ট্রিবিউটেড গ্রাফ ডেটাবেস। এটি S3-সামঞ্জস্যপূর্ণ অবজেক্ট স্টোরেজে টেকসই গ্রাফ স্টোরেজ প্রদানের জন্য ডিজাইন করা হয়েছে, যার সাথে রয়েছে স্ন্যাপশট-সুসংগত OpenCypher কোয়েরি, GraphBLAS ট্রাভার্সাল, Neo4j-সামঞ্জস্যপূর্ণ Bolt কানেক্টিভিটি এবং একটি HTTPS কোয়েরি API।
আর্কিটেকচারে সম্পূর্ণভাবে বিচ্ছিন্ন স্টোরেজ ও কম্পিউট রয়েছে। ডেটা নোড (graph-node) কোয়েরি এবং ক্যানোনিকাল মিউটেশন পরিবেশন করে, অন্যদিকে ইনডেক্সার (graph-indexer) ব্যাকগ্রাউন্ডে অপরিবর্তনীয় ট্রাভার্সাল ইনডেক্স তৈরি করে। উভয় ভূমিকাই কেবল মেমরি এবং স্থানীয় SSD বা NVMe-তে নিষ্পত্তিযোগ্য স্টেট রাখে, যা গ্রাফ স্থানান্তর ছাড়াই স্কেলিং সক্ষম করে। টেকসই সত্যের উৎস S3-সামঞ্জস্যপূর্ণ অবজেক্ট স্টোরেজে অবস্থিত, যা গ্রাফ রেকর্ড, WAL, ম্যানিফেস্ট এবং অপরিবর্তনীয় ট্রাভার্সাল ইনডেক্স ধারণ করে।
মূল সক্ষমতাগুলির মধ্যে রয়েছে:
- সমস্ত স্থায়ী ডেটার জন্য S3-সামঞ্জস্যপূর্ণ স্টোরেজসহ অবজেক্ট-স্টোর স্থায়িত্ব।
- ডেটা নোড এবং ইনডেক্সারের স্বাধীন স্কেলিং।
- অবজেক্ট-স্টোর CAS লিজ এবং SlateDB রাইটার এপক-এর মাধ্যমে নিরাপদ রাইটার হ্যান্ডঅফ।
- পিন করা SlateDB স্ন্যাপশট ব্যবহার করে সুসংগত রিড, যেখানে ইনডেক্সড ট্রাভার্সাল দৃশ্যমান WAL ওভারলে-এর সাথে মিলিত হয়।
- প্রপার্টি ইনডেক্স, রিভার্স অ্যাডজেসেন্সি, স্পার্স ট্রাভার্সাল এবং SuiteSparse GraphBLAS কাজে লাগিয়ে গ্রাফ-নেটিভ এক্সিকিউশন।
- পরিচিত ক্লায়েন্ট: Bolt 5.x-এর উপর Neo4j ড্রাইভার এবং টাইপড JSON/NDJSON HTTP API।
- প্রমাণীকরণ, অনুমোদন, ডেডলাইন, ফলাফল সীমা, ব্যাকপ্রেশার, বাতিলকরণ, ক্যাশে বাজেট, মেট্রিক্স এবং ট্রেসসহ সীমাবদ্ধ অপারেশন।
HydraDB রিড এবং মিউটেশনের জন্য একটি ব্যবহারিক OpenCypher সাবসেট সমর্থন করে, যার মধ্যে রয়েছে টাইপড রিলেশনশিপ, সীমাবদ্ধ ভেরিয়েবল-দৈর্ঘ্যের পাথ, প্রপার্টি ও লেবেল প্রেডিকেট, অর্ডারিং, পেজিনেশন, অ্যাগ্রিগেশন, OPTIONAL MATCH, UNION এবং ব্যাচড UNWIND রাইট। এটি দক্ষ সীমাবদ্ধ পাথ কোয়েরির জন্য নেটিভ স্ন্যাপশট-স্কোপড পাথ প্রসিডিউর (algo.SPpaths, algo.SSpaths, algo.MSpaths)ও প্রদান করে।
রিড কনসিস্টেন্সি দুটি মোড অফার করে: causal (ডিফল্ট, বর্তমান টেকসই রিডার ভিউ ব্যবহার করে) এবং strong (স্ন্যাপশট পিন করার আগে অবজেক্ট স্টোরেজ থেকে SlateDB রিডার রিফ্রেশ করে)। HTTPS অনুরোধ বডিতে কনসিস্টেন্সি সেট করে; Bolt ক্লায়েন্ট RUN বা ট্রানজেকশন মেটাডেটায় এটি সেট করে।
শুরু করার বিকল্পগুলির মধ্যে রয়েছে Docker ইমেজ (ghcr.io/hydra-db/hydradb) চালানো বা Rust 1.91+, একটি C/C++ টুলচেইন, libcypher-parser এবং SuiteSparse GraphBLAS দিয়ে সোর্স থেকে বিল্ড করা। রিপোজিটরি কমান্ড চালানোর জন্য `just` ব্যবহার করে। যাচাইকরণের ধাপগুলির মধ্যে রয়েছে স্মোক টেস্ট এবং রানটাইম স্মোক স্ক্রিপ্ট।
প্রোডাকশনের জন্য, Kubernetes ডিপ্লয়মেন্টের জন্য একটি Helm চার্ট উপলব্ধ, যা কোয়েরি নোড, ইনডেক্সার ওয়ার্কার, সার্ভিস, ক্যাশে ভলিউম, নেটওয়ার্ক পলিসি, ডিসরাপশন বাজেট, TLS, প্রমাণীকরণ এবং ঐচ্ছিক Prometheus ইন্টিগ্রেশন কনফিগার করে।
পর্যবেক্ষণযোগ্যতার বৈশিষ্ট্যগুলির মধ্যে রয়েছে HTTP হেলথ এন্ডপয়েন্ট, রেডিনেস ও মেট্রিক্স এন্ডপয়েন্ট, স্ট্রাকচার্ড ট্রেসিং ফিল্ড এবং OpenTelemetry সমর্থন। Prometheus ডিউরেশন হিস্টোগ্রামের নির্দিষ্ট ইউনিট নথিভুক্ত রয়েছে।
প্রকল্পটি AGPL-3.0 লাইসেন্সের অধীনে এবং এতে বেঞ্চমার্ক, আর্কিটেকচার ডকুমেন্টেশন, কারেক্টনেস কেসবুক, আনুষ্ঠানিক যাচাইকরণের প্রমাণ এবং একটি Jepsen কনসিস্টেন্সি রিপোর্ট অন্তর্ভুক্ত রয়েছে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.