সাধারণভাবে, এই জাতীয় কাঠামোযুক্ত ডেটাসেটের জন্য আমি সন্দেহ করি আপনি একটি কাস্টম ডেটা ফর্ম্যাট লিখতে পারেন যা বেশিরভাগ দৈনিক ক্রিয়াকলাপের জন্য দ্রুত ছিল (অর্থাত্ একটি স্বল্প সময়ের মধ্যে একটি ছোট ডেটা টানে)। স্ট্যান্ডার্ড ডিবি সরঞ্জামে স্থানান্তরিত হওয়ার সুবিধাটি অতিরিক্ত কিছু ক্ষেত্রে সম্ভবত যেমন অ্যাডহক প্রশ্নাবলী, একাধিক অ্যাক্সেস, প্রতিলিপি, প্রাপ্যতা ইত্যাদি etc. একটি মান ভিত্তিক ডেটা স্টোর বজায় রাখতে সহায়তা নেওয়া আরও সহজ।
যদি সেই ডেটা সঞ্চয় করার জন্য আমাকে কোনও ডাটাবেস সেট আপ করতে বলা হয়, তবে আমি নিম্নলিখিতগুলি করতাম:
প্রস্তাবিত স্কিমা
(1) মূল ডেটা পৃথক টেবিলের অসংখ্য (1000 এর) মধ্যে রাখা হয়েছে, যার প্রতিটিটিতে দুটি কলাম রয়েছে:
- সময়: হয় কোনও এসকিউএল ডেটাটাইম ডেটা টাইপ বা কোনও কিছু যুগের একটি সংখ্যার টাইপ (এটি প্রাথমিক কী)
- মান: আপনার ডেটার জন্য উপযুক্ত হিসাবে টাইপ করা। আমি একক নির্ভুলতা ভাসতে ডিফল্ট করব, তবে আর্থিক লেনদেনের জন্য একটি নির্দিষ্ট পয়েন্টের ডেটা ধরণের আরও উপযুক্ত হতে পারে। এটি সম্ভবত আনইন্ডেক্সড।
এই টেবিলগুলি বেশ বড় আকারের হবে এবং আপনি এগুলি (উদাহরণস্বরূপ) বছরের মধ্যে ম্যানুয়ালি ভাগ করতে চাইতে পারেন। তবে আপনাকে সিস্টেমের কার্য সম্পাদন এবং যথাযথ টিউন করতে হবে।
এই টেবিলগুলির স্বতন্ত্র নাম প্রয়োজন এবং কয়েকটি বিকল্প রয়েছে। এগুলি মানব পাঠযোগ্য (যেমন nyse_goog_dailyhighs_2010) বা (আমার পছন্দ) এলোমেলো হতে পারে। যে কোনও উপায়ে মেটাডেটা টেবিলের একটি সেট প্রয়োজন, এবং এলোমেলো টেবিলের নামগুলি বিকাশকারীদের নামটিতে এমন কিছু অনুমান করা থেকে বিরত রাখে যা অনুমিত হওয়া নয়।
(২) অ্যাপ্লিকেশন দ্বারা প্রয়োজনীয় হিসাবে মেটা ডেটা পৃথক সারণীতে সংরক্ষণ করা হয় :
মেটাডেটা ট্র্যাক রাখতে একটি অতিরিক্ত টেবিল বা টেবিলের সেট প্রয়োজন is এই টেবিলগুলিতে বিনিময়, উপকরণ, মান, ফ্রিকোয়েন্সি, তারিখের সীমা, প্রোভেন্যান্স (ডেটা কোথা থেকে এসেছে) এবং আরও আপনার যে কোনও কিছুর তথ্য থাকবে। এগুলি ডেটা টেবিলের নামগুলিতে ম্যাপ করা হয়।
যদি পর্যাপ্ত ডেটা থাকে তবে এই অনুসন্ধানটি আসলে একটি টেবিলের নাম এবং ডাটাবেসের নাম সরবরাহ করতে পারে, যা একরকম স্ব-বাস্তবায়িত ডেটা শ্যাডিংয়ের অনুমতি দেয় (যদি শব্দটির সঠিক ব্যবহার হয়)। তবে আমি তা রিজার্ভে রাখব।
তারপরে অ্যাপ্লিকেশন স্তরে আমি আমার ডেটা কোথায় ছিল তা নির্ধারণ করতে মেটাডেটা টেবিলগুলি জিজ্ঞাসা করব এবং তারপরে আমার ডেটা পাওয়ার জন্য বড় ডেটা টেবিলগুলিতে তুলনামূলকভাবে সহজ অনুসন্ধানগুলি করব।
সুবিধাদি:
আমার (তুলনামূলকভাবে সীমাবদ্ধ) অভিজ্ঞতা হ'ল ডেটাবেসগুলি সাধারণত বিশাল সংখ্যক ছোট টেবিলের সংখ্যাকে বড় সংখ্যক বড় টেবিলের চেয়ে সহজভাবে পরিচালনা করতে পারে। এই পদ্ধতির সাহায্যে সহজেই রক্ষণাবেক্ষণও সক্ষম হয় (যেমন পুরানো ডেটা পরিষ্কার করা, একটি দুর্নীতিগ্রস্থ টেবিলটি পুনর্নির্মাণ, ব্যাকআপগুলি থেকে তৈরি / পুনরায় লোড করা, একটি নতুন সত্তা যুক্ত করা)। এটি সম্পূর্ণরূপে বিভিন্ন ধরণের ডেটা ডিউপল করে, যদি (উদাহরণস্বরূপ) আপনার কাছে বিভিন্ন হারে ডেটা থাকে বা বিভিন্ন ধরণের ডেটা প্রয়োজন হয়।
এই চর্মসার টেবিল ধারণাটি আমার যে সন্দেহ হয় তার জন্য দ্রুত ডিস্ক অ্যাক্সেসেরও অনুমতি দেওয়া উচিত, এটি একটি একক সত্তার ডেটাগুলির একটি পরিসংখ্যান পরিসীমা। বেশিরভাগ ডেটা অ্যাপ্লিকেশনগুলি ডিস্ক আই / ও সীমিত, তাই এটি বিবেচনা করার মতো। একজন মন্তব্যকারী ইতিমধ্যে ইঙ্গিত করেছে, এটি আমার কলাম ভিত্তিক ডাটাবেসের জন্য একটি আদর্শ অ্যাপ্লিকেশন, তবে আমার কেরিয়ারটি বাজি রাখার পক্ষে আমার পক্ষে পর্যাপ্ত মূলধারার একটি কলাম ওরিয়েন্টেড পণ্য এখনও খুঁজে পাইনি। এই স্কিমা বেশ কাছাকাছি হয়।
অসুবিধা:
আপনার ডিস্কের প্রায় অর্ধেক জায়গাই টাইম স্ট্যাম্পগুলি সংরক্ষণ করার জন্য উত্সর্গীকৃত, যখন বেশ স্পষ্টভাবে 100 বা 1000 এর টেবিলগুলির টাইমস্ট্যাম্প কলামে ঠিক একই তথ্য থাকবে। (যদি আপনি সহজে টেবিলের সাথে যোগ দিতে চান তবে এটি প্রয়োজন)।
টেবিলের নাম সংরক্ষণ এবং গতিশীল অনুসন্ধান সম্পাদনের জন্য প্রচুর অ্যাপ্লিকেশন জটিলতা এবং স্ট্রিং ক্রিয়াকলাপ প্রয়োজন, যা ধরণের আমাকে ক্রিঞ্জ করে তোলে। তবে এটি বিকল্পগুলির চেয়ে আরও ভাল বলে মনে হচ্ছে (নীচে আলোচনা করা হয়েছে)।
বিবেচ্য বিষয়:
আপনার সময়ক্ষেত্রে গোল করার বিষয়ে সাবধানতা অবলম্বন করুন। আপনি নিজের মানগুলি যথেষ্ট পরিমাণে যোগ দিতে (উপযুক্ত হলে) সক্ষম করতে চান তবে সংক্ষিপ্ত হওয়ার পক্ষে যথেষ্ট সুনির্দিষ্ট।
সময় অঞ্চল এবং দিবালোক সঞ্চয়ের সময় সম্পর্কে সতর্ক থাকুন। এগুলি পরীক্ষা করা শক্ত। আমি ডেটা স্টোরটিতে একটি ইউটিসি প্রয়োজনীয়তা প্রয়োগ করব (যা আমাকে অজনপ্রিয় করতে পারে) এবং অ্যাপ্লিকেশনটিতে রূপান্তরগুলি পরিচালনা করবে।
প্রকারভেদ:
কিছু বিবেচনা যা আমি বিবেচনা করেছি তা হ'ল:
ডেটা ফোল্ডিং: টাইমসিরিজগুলি যদি সমানভাবে ব্যবধানে থাকে, তবে একটি টাইমস্ট্যাম্প কলাম এবং (উদাহরণস্বরূপ) 10 ডেটা কলাম ব্যবহার করুন। টাইমস্ট্যাম্পটি এখন প্রথম ডেটা কলামের সময়কে বোঝায় এবং অন্যান্য তথ্য কলামগুলি সেই টাইমস্ট্যাম্প এবং পরবর্তীটির মধ্যে সমানভাবে ব্যবধানযুক্ত বলে ধরে নেওয়া হয়। এটি উল্লেখযোগ্য ক্যোয়ারী এবং / অথবা অ্যাপ্লিকেশন জটিলতার ব্যয়ে টাইমস্ট্যাম্পগুলি সংরক্ষণ করার জন্য প্রচুর সঞ্চয়স্থান সংরক্ষণ করে। সংক্ষিপ্ত পরিসীমা, একক সত্তা কোয়েরিতে এখন কম ডিস্ক অ্যাক্সেস প্রয়োজন।
মাল্টি প্লেক্সিং: যদি একাধিক টাইম সিরিজ একই সময় সিরিজটি ব্যবহার করে জানা থাকে তবে একটি টাইমস্ট্যাম্প এবং (উদাহরণস্বরূপ) উপরে বর্ণিত হিসাবে 10 ডেটা কলাম ব্যবহার করুন। তবে এখন প্রতিটি কলাম আলাদা সময় সিরিজের প্রতিনিধিত্ব করে। এর জন্য মেটাডেটা টেবিলের আপডেট দরকার, যা টেবিল এবং কলামের নাম অনুসন্ধান নয়। স্টোরেজ স্পেস হ্রাস করা হয়। প্রশ্নগুলি সহজ থাকে। তবে সংক্ষিপ্ত পরিসীমা, একক সত্তা কোয়েরিতে এখন উল্লেখযোগ্যভাবে আরও বেশি ডিস্ক অ্যাক্সেস প্রয়োজন।
মেগা-সারণী: "মাল্টি-প্লেক্সিং" ধারণাটি চূড়ান্তভাবে নিন এবং সমস্ত কলামকে একক টেবিলের মধ্যে রাখুন, একবার কলামে সময় সিরিজ। এর জন্য সুসংহত পরিসীমা, একক সত্তা অনুসন্ধানগুলির জন্য বৃহত পরিমাণে ডিস্ক অ্যাক্সেস প্রয়োজন এবং এটি একটি রক্ষণাবেক্ষণ দুঃস্বপ্ন। উদাহরণস্বরূপ একটি নতুন সত্তা যুক্ত করার জন্য এখন অনেকগুলি টিবি টেবিলের উপর মোডিফাই টেবিল কমান্ড প্রয়োজন।
এই ফর্ম্যাটটি সম্পর্কে অতিরিক্ত আলোচনার জন্য বিভিন্ন উত্তর দেখুন:
মাইএসকিউএল-এ অনেক বেশি কলাম
পুরোপুরি স্বাভাবিককরণের টেবিল:
অনেকগুলি 2-কলামের সারণী ব্যবহার করার পরিবর্তে আপনি একটি, তিন-কলামের সারণী ব্যবহার করতে পারেন, যেখানে কলামগুলি সময়, ডেটাডিড এবং মান। এখন আপনার মেটাডেটা টেবিলগুলিতে কেবল টেবিলের নাম বা কলামের নাম নয়, আইডি মানগুলি সন্ধান করতে হবে যা অ্যাপ্লিকেশন স্তরটির পরিবর্তে এসকিউএল কোয়েরিতে আরও যুক্তি সজ্জিত করতে সক্ষম করে।
প্রায় 2/3 স্টোরেজ এখন স্বাভাবিককরণ কলামগুলির সাথে গ্রাস করা হয়, সুতরাং এটি প্রচুর ডিস্কের স্থান ব্যবহার করবে।
দ্রুত সঙ্গতিপূর্ণ, একক সত্তা প্রশ্নের জন্য আপনি একটি প্রাথমিক কী অর্ডার (ডেটাবিড, টাইমস্ট্যাম্প) ব্যবহার করতে পারেন। বা, আপনি দ্রুত সন্নিবেশগুলির জন্য (টাইমস্ট্যাম্প। ডেটাডিড) এর একটি প্রাথমিক কী অর্ডার ব্যবহার করতে পারেন।
যাইহোক, এই বৈচিত্রগুলি বিবেচনা করার পরেও, আমার পরবর্তী বিকাশের জন্য আমার পরিকল্পনাটি প্রচুর টেবিল, প্রতিটি দুটি কলাম। এটি, বা পদ্ধতিটি শীঘ্রই আমার চেয়ে আরও জ্ঞানী কেউ পোস্ট করবেন :)।