मेरे पास एक भौतिक मशीन होस्ट पर चलने वाली एक वर्चुअल मशीन (डेबियन) है। वर्चुअल मशीन डेटा के लिए एक बफर के रूप में कार्य करता है जो इसे अक्सर स्थानीय नेटवर्क पर प्राप्त होता है (इस डेटा की अवधि 0.5s है, इसलिए काफी उच्च थ्रूपुट है)। प्राप्त किसी भी डेटा को वर्चुअल मशीन पर संग्रहीत किया जाता है और बार-बार यूडीपी पर एक बाहरी सर्वर को अग्रेषित किया जाता है। एक बार जब बाह्य सर्वर स्वीकार करता है (UDP से अधिक) कि उसे डेटा पैकेट प्राप्त हुआ है, तो मूल डेटा को वर्चुअल मशीन से हटा दिया जाता है और फिर से बाहरी सर्वर पर नहीं भेजा जाता है। वीएम और बाहरी सर्वर को जोड़ने वाला इंटरनेट कनेक्शन अविश्वसनीय है, जिसका अर्थ है कि यह एक समय में दिनों के लिए नीचे हो सकता है।
वीएम को होस्ट करने वाली भौतिक मशीन यादृच्छिक रूप से प्रति दिन कई बार बिजली काटती है। यह बताने का कोई तरीका नहीं है कि यह कब होने वाला है और यह यूपीएस, बैटरी, या सिस्टम के समान समाधान को जोड़ना संभव नहीं है।
मूल रूप से, डेटा वर्चुअल मशीन पर एक फ़ाइल-आधारित HSQLDB डेटाबेस पर संग्रहीत किया गया था। हालाँकि, लगातार बिजली कटौती अंततः डेटाबेस स्क्रिप्ट फ़ाइल को दूषित होने का कारण बनती है (फाइल सिस्टम स्तर पर नहीं, अर्थात यह पठनीय है, लेकिन HSQLDB इसका कोई मतलब नहीं निकाल सकता), जिससे मेरा प्रश्न बनता है:
डेटा को ऐसे वातावरण में कैसे संग्रहीत किया जाना चाहिए जहां बिजली कटौती हो सकती है और अक्सर होती है?
एक विकल्प जो मैं सोच सकता हूं, वह फ्लैट फाइल का उपयोग कर रहा है, फाइल सिस्टम पर एक फाइल के रूप में डेटा के प्रत्येक पैकेट को बचा रहा है। इस तरह से यदि कोई फ़ाइल शक्ति के नुकसान के कारण दूषित है, तो इसे अनदेखा किया जा सकता है और शेष डेटा बरकरार रहता है। हालाँकि, यह कुछ समस्याएँ हैं जो मुख्य रूप से वर्चुअल मशीन पर संग्रहीत डेटा की मात्रा से संबंधित है। प्रत्येक डेटा के बीच 0.5s पर, 10 दिनों में 1,728,000 फाइलें उत्पन्न होंगी। इस डेटा को संग्रहीत करने के लिए बढ़ी संख्या में इनोड्स के साथ फ़ाइल सिस्टम का उपयोग करने का कम से कम मतलब है (वर्तमान फ़ाइल सिस्टम सेटअप ~ 250,000 संदेशों और उपयोग किए गए 30% डिस्क स्थान पर इनोड से बाहर चला गया)। साथ ही, प्रबंधन करना कठिन (असंभव नहीं) है।
क्या कोई अन्य विकल्प भी हैं? क्या डेबियन पर चलने वाले डेटाबेस इंजन हैं जो बिजली कटौती से दूषित नहीं होंगे? साथ ही, इसके लिए किस फ़ाइल सिस्टम का उपयोग किया जाना चाहिए? ext3 जो इस समय उपयोग किया जाता है।
वर्चुअल मशीन पर चलने वाला सॉफ्टवेयर जावा 6 का उपयोग करके लिखा गया है, इसलिए उम्मीद है कि समाधान असंगत नहीं होगा।