KamoCRM

एक वितरित डाटा परत, जानबूझकर चुना गया

वितरित एसक्यूएल, चौड़ा स्तंभ, कैश, वस्तु भंडारण और सदिश - प्रत्येक एक कारण के लिए

पांच अलग-अलग डेटा स्टोर्स, प्रत्येक एक प्रश्न का जवाब देते हैं, अन्य गलत जवाब देते हैं: लेनदेन व्यापार डेटा के लिए वितरित SQL, उच्च-लेखन टेलिमेट्री के लिए चौड़ा स्तंभ, अल्पकालिक राज्य के लिए एक मेमोरी स्टोरेज, फ़ाइलों के लिए वस्तु भंडारण, और शब्दार्थ खोज के लिए एक वेक्टर डेटाबेस।

प्रत्येक संख्या यहाँ नाम है कि यह कहाँ से आया था और जब मापा गया था।
मापमूल्यस्रोतमापा
उत्पादन में विशिष्ट डाटा भंडार5 (YugabyteDB, ScyllaDB, Redis/Valkey, MinIO, Qdrant)kubectl get statefulsets,deployments --all-namespaces
वितरित एसक्यूएल टोपोलोजीyb-master and yb-tserver as separate stateful setskubectl get statefulsets -n kamo
संस्करण नियंत्रण के तहत एसक्यूएल माइग्रेशन फ़ाइलें90find . -name '*.sql' across all service repositories
उत्पादन डाटाबेस इंजिन माइग्रेशन पूर्ण1 (CockroachDB to YugabyteDB, live data)service configuration history; port 26257 retired in favour of 5433

क्या इमारत यह हमें सिखाया

डेटा कहाँ जाता है इसका डिफ़ॉल्ट जवाब वह है जो अंतिम परियोजना का उपयोग करता है. यही है कि कैसे एक व्यवसाय डेटाबेस के खिलाफ विश्लेषणात्मक एकत्रीकरण चलाने के लिए समाप्त होता है, ग्राहकों के आदेशों को लेता है, या टेबल पंक्तियों में अपलोड की गई फाइलों के तीस गीगाबाइट रखता है. हमने वर्कलोड के खिलाफ प्रत्येक स्टोर को चुना, और जब हमने इसे गलत समझा तो हमने इसे स्थानांतरित कर दिया - प्लेटफॉर्म पहले एक अलग वितरित SQL इंजन पर चला और इसे हटा दिया, जो उत्पादन डेटा के साथ करने के लिए एक सच्ची कठिन बात है और वास्तुकला की चर्चा की किसी भी मात्रा से अधिक अनुभव के रूप में मूल्यवान है।

वितरित एसक्यूएल एकल नोड डाटाबेस के लिए एक ड्रॉप-इन प्रतिस्थापन नहीं है, और वे तरीके जो यह अलग है वे हैं जो काटते हैं. एक लेनदेन अपने पूरे जीवन के लिए एक स्नैपशॉट को पढ़ने-कमिट मोड में भी देखता है, इसलिए एक लेनदेन के भीतर एक पंक्ति का दूसरा पढ़ना बीच में एक अन्य लेनदेन को कमिट नहीं करता है - कोड जो एकल नोड पर सही था, यहाँ चुपके से गलत है. पढ़ने-और-लिखने के संघर्षों को लेनदेन पर फिर से कोशिश करने योग्य त्रुटियों के रूप में देखा जाता है जो कभी कुछ भी नहीं लिखते थे. ये असामान्य किनारे के मामले नहीं हैं; वे मंगलवार हैं, और वे हैं कि हम डेटा कार्य पर क्या वादा करते हैं, इसके बारे में सावधान क्यों हैं।

वस्तु भंडारण प्रत्येक अपलोड फ़ाइल को ले जाता है, सामग्री द्वारा डिडुप्लिकेशन के साथ, और उसका अपना सबक है: एक असफल अपलोड एक पंक्ति छोड़ सकता है जिसे बाद में फिर से कोशिश करने पर डिडुप्लिकेशन के खिलाफ छोड़ा जाता है, एक फ़ाइल का उत्पादन करता है जिसका सिस्टम मानता है कि मौजूद है और सेवा नहीं कर सकता है. हमने उत्पादन में पाया कि. यह अब कुछ ऐसा है जिसके लिए हम किसी भी सिस्टम में जाँच करते हैं जो हम बनाते हैं जो कुछ भी डिडुप्लिकेशन करता है.

के साथ बनाया गया

  • YugabyteDB
  • ScyllaDB
  • Redis
  • Valkey
  • MinIO
  • Qdrant
  • PostgreSQL wire protocol
  • Hibernate

क्या यह हमारे लिए योग्य है

Data engineering and migrationMoving data between systems without losing any of itCustom web applicationsThe system your business actually runs on, built properlyPlatform and DevOps engineeringKubernetes, pipelines and the deployment safety nobody notices until it is missing

हमें बताएं कि आप क्या करने की कोशिश कर रहे हैं

एक छोटी बातचीत आमतौर पर यह बताने के लिए पर्याप्त है कि क्या हम सही लोग हैं. यदि हम नहीं हैं, तो हम ऐसा कहेंगे और आपको कहीं बेहतर जगह दिखाएंगे.

बातचीत प्रारंभ करेंमैं पहले से प्रयोग कर रहा हूँ KamoCRMहम कैसे उद्धृत करते हैं