বিশাল সেন্সর অ্যারে থেকে ডেটা নমুনাগুলি সংরক্ষণ করার জন্য আমাকে একটি সমাধান (অ্যাপ্লিকেশন এবং ডিবি) বাস্তবায়নের দায়িত্ব দেওয়া হয়েছে। অ্যারেটিতে প্রায় 20,000 সেন্সর রয়েছে, তবে শীঘ্রই এটি 100,000 সেন্সর পর্যন্ত বাড়তে চলেছে। প্রতিটি সেন্সর প্রতি 10 সেকেন্ডে ডেটা নমুনা প্রেরণ করে এবং প্রতিটি নমুনা আকারে 28 বাইট।
এই পরিমাণে করতে গিয়ে বাড়ে:
- প্রতিদিন সেন্সর প্রতি 8640 নমুনা
- প্রতিদিন সেন্সরটিতে 242 কেবি ডেটা
- প্রতিদিন 864 মিলিয়ন নমুনা
এখন আমি ভাবছিলাম যে ডেটা সংরক্ষণ / পুনরুদ্ধার করার সর্বোত্তম উপায় কী হবে? ইতিমধ্যে সফ্টওয়্যারটি নির্দিষ্ট করার পরে আমি এই প্রকল্পটিতে "যোগদান" করেছি, সুতরাং এটি এসকিউএল সার্ভার ব্যবহার করে একটি উইন্ডোজ প্ল্যাটফর্মে প্রয়োগ করা দরকার।
আমার মাথার বর্তমান সমাধানটি হ'ল ডেটা নমুনাগুলি সঞ্চয় করতে দুটি টেবিল সহ একটি ডিবি তৈরি করা। প্রথমটি দ্বিতীয়টিতে একটি সূচকের সাজানোর কাজ করে যা প্রতি সেন্সর ভিত্তিতে প্রতিদিন বাইনারি ক্ষেত্রের মধ্যে জমে থাকা নমুনাগুলি সঞ্চয় করে:
Table 1:
RecordID - BigInt - Identity
SensorID - BigInt - Primary Key
Date - DateTime - Primary Key (yyyy-mm-dd)
Table 2:
RecordID - BigInt - Primary Key (from an insert into Table 1)
Data - Binary
মূলত আমি সমস্ত সেন্সর থেকে নমুনাগুলি অস্থায়ী ফাইলগুলিতে লিখব (প্রতি সেন্সর 1)। প্রতিটি দিন শেষে আমি তারপরে সারণি 1 এ একটি এন্ট্রি তৈরি করব, উত্পন্ন রেকর্ডআইডি ব্যবহার করব এবং টেবিল 2-এ ফাইলটি ডেটা ফিল্ডে ফেলে দেব।
এইভাবে আমি 864 মিলিয়ন এন্ট্রির পরিবর্তে প্রতিদিনের টেবিলে কেবল 100,000 এন্ট্রি দিয়ে শেষ করি। ল্যান বা উচ্চ গতির WAN- তে ডেটা উপলব্ধ থাকতে হবে, তাই পুরো দিন ভিত্তিতে সেন্সরের ডেটা পুনরুদ্ধার গ্রহণযোগ্য হবে।
যদিও সমস্ত ডেটা সংরক্ষণ করতে হয়, তবে এর বেশিরভাগটি সম্ভবত কখনও পড়তে হবে না। সুতরাং টেবিলে পাঠের পরিমাণ লেখার চেয়ে বিশাল পরিমাণে হবে না।
আমি জানি যে আমি কেবল ডেটা ফাইলের পাথ সংরক্ষণ করে ফাইল সিস্টেমটি ব্যবহার করে কিছু বাস্তবায়ন করতে পেরেছিলাম, তবে আমি পড়েছি যে এসকিউএল সার্ভার এনটিএফএসকে ছাড়িয়ে গেছে যখন আপনার বাইনারি ক্ষেত্রগুলি 256 কেবি ধন্যবাদ জানায়। (256kB এবং 1MB এর মধ্যে একটি ধূসর অঞ্চল বিদ্যমান, যখন এনটিএফএস বাইনারি আকারের> 1 মেগাবাইটের জন্য এসকিউএল সার্ভারকে ছাড়িয়ে যায়)।
আমি কোনও ফোল্ডারে বিপুল পরিমাণে ফাইল থাকার কারণে বা প্রতিটি ফোল্ডারে কয়েকটি ফাইল সহ জটিল গাছের কাঠামো না রেখে ফাইল সিস্টেমে সমস্যা সৃষ্টি না করেই তাদের নিজস্ব ফাইলগুলিতে ১০০,০০০ সেন্সর থেকে ডেটা সংরক্ষণ করার বিষয়ে কিছুটা সতর্কতাও রয়েছি এমনকি ফাইলের খণ্ডনকেও অ্যাকাউন্টে নিচ্ছেন।
উপরের বিষয়ে কেউ আমাকে কিছু ব্যবহারিক পরামর্শ / মন্তব্য দিতে পারেন?
আমি যে পড়তে চলেছি সেখানে কি স্পষ্ট সমস্যা আছে?
নমুনা তথ্য বেশ সুন্দরভাবে সংকুচিত করে। একটি 242 কেবি ফাইল প্রায় 85 কেবিতে কমপ্রেস করে। আমি কি ডাটাবেস স্তরে এমন কিছু সংকোচনের প্রয়োগ করতে পারি যাতে নমুনা ডেটা (কলাম) স্বয়ংক্রিয়ভাবে সংকুচিত হয়?
এসকিউএল সার্ভারটি কি এই প্রকল্পের জন্য স্পষ্টতই ভুল পছন্দ?
দুটি টেবিলের আমার নকশাটি কি বুদ্ধিমান, বা আমি ঠিক পাশাপাশি এটি একটি একক টেবিলের সাথে সংযুক্ত করতে পারি যা এখনও দুটি টেবিলের মতো "পারফরম্যান্ট" হবে?