বিপুল সংখ্যক কলাম সংরক্ষণ করার ভাল উপায় কী?


18

আমার ডেটাবেজে এই ডেটা কীভাবে সংরক্ষণ করবেন তা সিদ্ধান্ত নিতে আমার একটি সমস্যা আছে। এটি করার সর্বোত্তম উপায়ে কোনও পরামর্শ? আমি ডেটাবেস সম্পর্কে অনেক কিছুই জানিনা, আমি যুক্ত করতে পারি।

আমার মতো ফর্ম্যাটে ডেটা আসছে, তবে 4 এর চেয়ে কলামগুলির সংখ্যা প্রায় 240, তাই প্রতিটি তারিখের সাথে 240 অনন্য মান যুক্ত থাকে:

Date/Time 200,00 202,50 205,00  
2010.11.12  13:34:00  45,8214 43,8512  41,5369   
2010.11.12  13:35:00  461,9364  454,2612  435,5222 

এছাড়াও, সারিগুলি ডেটাসাইটগুলির সাথে যুক্ত।

আমার প্রথম চিন্তাটি ছিল এরকম একটি সারণী রাখার জন্য: ডেটাসাইট, প্যারামিটার এবং তারিখের একটি সূচক সহ ডেটাআইডি (পিকে), ডেটাসাইট, প্যারামিটারআইডি, তারিখ, মান। প্যারামিটারআইডি অন্য একটি সারণিকে বোঝায় যা ইনপুট কলামের শিরোনাম (200,00 202,50 205,00 ...) সঞ্চয় করে।

আমার দ্বিতীয় চিন্তাটি কেবল সমস্ত 240-বিজোড় কলামগুলির সাথে একটি টেবিল রাখা ছিল। আমি আরও কয়েকটি উপায় নিয়ে এসেছি, তবে তারা বেশ অসন্তুষ্টও is

আমার প্রথম সমাধানটির সাথে আমার যে সমস্যাটি রয়েছে (এত বিশাল সমস্যা নয় তবে আমি এটি পছন্দ করি না) তা হ'ল যে ইনপুট সারিতে সমস্ত 240 মানের জন্য তারিখ এবং ডেটাসাইট আইডিটি পুনরাবৃত্তি হতে চলেছে, তাই এটি বেশ কিছুটা ব্যবহার করে অতিরিক্ত স্থান।

এক বছরে প্রায় 40gb ডেটা আসবে (উপরের পাঠ্য বিন্যাসে), এবং ডেটা সাইট, প্যারামিটার এবং তারিখ দ্বারা অনুসন্ধান করা হবে। যে পরিমাণ ডাটা আসবে তা সম্ভবত এক বছর বা তার মধ্যে চারগুণ হয়ে যাবে।

কোন ভাল ধারণা? ধন্যবাদ, জেমস

সম্পাদনা করুন: কলামগুলি বিভিন্ন তরঙ্গদৈর্ঘ্যে পরিমাপের সাথে এটি সময় সিরিজের ডেটা। তরঙ্গদৈর্ঘ্যের তুলনামূলকভাবে সংকীর্ণ পরিসরের মধ্যে ডেটা বিশ্লেষণ করতে চাইবে। ভবিষ্যতে কোনও সময়ে অতিরিক্ত তরঙ্গদৈর্ঘ্য যুক্ত হতে পারে।

সম্পাদনা করুন: উত্তরগুলির জন্য ধন্যবাদ, আমি এটির সত্যই প্রশংসা করি :) আমি মনে করি আমি সম্ভবত 500gb বা পরীক্ষার ডেটা নিয়ে কিছু পরীক্ষা চালানোর জন্য সময় খুঁজে পেতে পারি। আমি কোনও সিদ্ধান্ত নিয়ে ফিরে পোস্ট করব;)


2
আমি কলামগুলির নামকরণ থেকে অনুমান করছি যে এটি পর্যবেক্ষণের সময় সিরিজের ডেটা একরকম। যদি এটি বিজ্ঞানের ডেটা হয় তবে আমি বিজ্ঞানের শাখায় তাদের ডেটাগুলি সংগঠিত করার সাধারণ উপায় আছে কিনা তা দেখতে বা খুব কমপক্ষে, বিজ্ঞানের ব্যবহারের ক্ষেত্রে কী কী তথ্য ব্যবহার করা যায় তা দেখার জন্য সন্ধান করতে চাই।
জো

এটি প্রকৃতপক্ষে সময় সিরিজের ডেটা :) কিছুটা আরও তথ্যের সাহায্যে সম্পাদিত মূল পোস্ট।
জেমস

উত্তর:


10

আপনি যে কোনও উপায়ে কেস তৈরি করতে পারেন, তবে যদি বিশ্লেষণের জন্য ডেটাটি ব্যবহার করা হয় এবং আপনি প্রায়শই সেই ডেটা থেকে একই সাথে একাধিক কলাম দেখতে চান তবে প্রশস্ত টেবিলটি নিয়ে যান। আপনার ডাটাবেসগুলি কলামের পরিমাণ এবং সারি আকারের সীমা জানেন তা নিশ্চিত করুন। আপনি ডেটাটাইপগুলি ঠিকঠাক পেয়েছেন তা নিশ্চিত করুন। যদি কলামগুলির অনেকগুলি শূন্য থাকে, এসকিউএল সার্ভার আপনাকে তার জন্য সারণীটি অনুকূল করতে দেয়। আপনি এই ধরণের ডেটা বিশ্লেষণের জন্য একটি NOSQL (কেবলমাত্র এসকিউএল নয়) সমাধানটি বিবেচনা করতে পারেন।

যদি এই ডেটা বিশ্লেষণের জন্য কম হতে থাকে, আপনি আপনার প্রশ্নের বিবরণী অনুযায়ী এটিকে স্বাভাবিক করতে চাইতে পারেন।


6

আমার আপনার মতো অবস্থা ছিল, 257 টি ক্ষেত্র যেখানে প্রতি বছর 30-50gb আসে I আমি কেবল এটিকে সহজ করে রেখেছিলাম, এসকিউএল সার্ভারে একটি দীর্ঘ বড় ছেলের টেবিল। আমার ডেটাটি মোটামুটিভাবে অনুসন্ধান করা হয়েছিল তবে মূলত তারিখে এবং এটি ভালভাবে কাজ করে worked

আমি লজিকাল ছোট ছোট দলগুলিতে (50 বা তার বেশি গ্রুপ) ডেটা ভেঙে ফেলতে পারতাম, তবে এই ক্ষেত্রে সত্যিকার অর্থে তার খুব একটা সুবিধা ছিল না তাই আমি নিজেকে বিরক্ত করে রক্ষা করলাম।

আমি যদি অভিনব অনুভব করছিলাম এখন আমি একটি নোএসকিউএল বিকল্পটি বিবেচনা করতে পারি যা তত্ত্বের ক্ষেত্রে আরও ভাল ফিট তবে মিশনের সমালোচনামূলক ডেটা দিয়ে নতুন জিনিস চেষ্টা করা স্নায়ুর পক্ষে সর্বদা দুর্দান্ত নয়।


6

সুতরাং, নির্দ্বিধায় আমার নিজের প্রশ্নের উত্তর দেওয়ার জন্য (প্রকল্পটি শেষ পর্যন্ত কখনই এগিয়ে যায়নি), যখন আমি কিছুটা অতিরিক্ত সময় অর্জন করতে সক্ষম হলাম তখন সারণিটির সাথে 500gb ডেটা দিয়ে একটি পরীক্ষার টেবিলটি পূরণ করেছি:

আমার প্রথম চিন্তাটি ছিল এরকম একটি সারণী রাখার জন্য: ডেটাসাইট, প্যারামিটার এবং তারিখের একটি সূচক সহ ডেটাআইডি (পিকে), ডেটাসাইট, প্যারামিটারআইডি, তারিখ, মান। প্যারামিটারআইডি অন্য একটি সারণিকে বোঝায় যা ইনপুট কলামের শিরোনাম (200,00 202,50 205,00 ...) সঞ্চয় করে।

ডাটাবেস সেটআপটি ছিল 3gb র্যাম সহ পুরানো ডুয়াল কোর মেশিনে স্ট্যান্ডার্ড পোস্টগ্রিসকিউএল ইনস্টল। আমি প্রায় এক ঘন্টা সময়সীমা, 1 দিনের সময়কাল, এবং ডেটা নতুন অংশ সন্নিবেশ করিয়ে ডেটাসাইট তারিখ এবং প্যারামিটারআইডি দ্বারা ডেটা নির্বাচন করে প্রায় এক ডজন বিভিন্ন প্রশ্নের সন্ধান করেছি। স্মৃতি থেকে, সমস্ত ক্যায়্যারিগুলি কার্যকর করতে এক সেকেন্ডেরও কম সময় নিয়েছিল। এটি অবশ্যই আমার প্রত্যাশার চেয়ে অনেক দ্রুত এবং বেশ ব্যবহারযোগ্য was একটা জিনিস যা আমি ভেবে দেখিনি যে তা এইভাবে টেবিলের সাথে সূচী করা হয়েছিল তত সূচী ফাইলটিও প্রায় 500gb ছিল, সুতরাং এর পরিবর্তে 240 কলাম প্রশস্ত টেবিল থাকা অবশ্যই ডিস্কের অনেক জায়গা সাশ্রয় করবে।


তবে স্থান বাঁচানোর সময়, এটি সূচকের গতিতে সুনিশ্চিতভাবে প্রভাবিত করবে। আপনি সুযোগ পেলে আবার চেষ্টা করতে পারেন এবং এগিয়ে যান এবং এটিকে ঘোরান।
jcolebrand

3

পোস্টগ্র্রেসে আমি সুন্দরভাবে এটিকে অ্যারে টাইপ বা ওরাকলে একটি ভ্যারির সাহায্যে সমাধান করব ।


এটি কাজ করবে, কেবল ধরা পড়ার দরকার ছিল যে আমাকে কোথাও সেই ডেটাসাইটের জন্য কলামের শিরোনামগুলি সংরক্ষণ করতে হবে, কারণ এটি ছাড়া ডেটার কোনও অর্থ হয় না এবং এগুলি পরিবর্তিত / পরিবর্তন হতে পারে (তাদের ধারণা করা হয় না, তবে আমি ' পূর্বে শূকরগুলি উড়তে দেখা গেছে ...)
জেমস

সেক্ষেত্রে আমার মূল ডেটা টেবিলটিতে আমার কাছে আরেকটি কলাম হবে "সংস্করণ", এবং কলাম শিরোনামের অ্যারেতে অন্য টেবিল ম্যাপিং সংস্করণ (সুতরাং অ্যারে সূচকগুলি ডেটা অ্যারের সাথে মেলে)।
গাইউস

3

এটি আপনার সমস্যার জন্য কার্যকর কিনা তা আমি জানি না, তবে কলামগুলির জন্য আমাকে সরাসরি অনুরোধ করার দরকার নেই (কোলস যা আমি কখনই আমার অবস্থার মধ্যে রাখি না), এবং যেগুলি কেবলমাত্র তথ্যমূলক যখন আমি কিছু সম্পর্কে সমস্ত তথ্য চাই নির্দিষ্ট সারি, আমি এগুলি JSON ফর্ম্যাটেড ব্লগের ক্ষেত্রে একত্রিত করি।


তদ্ব্যতীত, যে উদ্দীপনা সঙ্কুচিত। ক্লায়েন্টে সংক্ষেপণ করুন, যাতে আপনি নেটওয়ার্ক এবং সার্ভারে বোঝা যুক্ত করছেন না।
রিক জেমস

2

আমি সম্ভবত কোয়েরি প্যারামিটার_আইডির বিতরণের উপর নির্ভর করে নকশার চূড়ান্ত সিদ্ধান্ত নেব। এটি হ'ল যদি এমন কয়েকটি প্যারামিটার_আইড থাকে যা প্রায় একচেটিয়াভাবে অনুসন্ধান করা হয় তবে আমি তাদের মানগুলি একটি গরম টেবিলের মধ্যে এবং বাকী মানগুলি অন্য একটি ঠান্ডা টেবিলে রাখতাম

ওহো, যদি তাদের ক্যোয়ারী-বিতরণ আরও কম-বেশি হয় তবে আমি কয়েক দিনের মূল্যবান একটি নমুনা সেটটি একটি টেবিলের মধ্যে লোড করতাম যেখানে একটি রেকর্ড সমস্ত মান রাখে যাতে রেকর্ড / ডিবি-ব্লকের মধ্যে অনুপাত কী হয় তা দেখতে (বা যদি এমনকি শৃঙ্খলাবদ্ধতার সমস্যা রয়েছে, যা সম্ভবত)। তার উপর নির্ভর করে আমি তারপরে আরও একটি ডিজাইনের সিদ্ধান্ত নেব।

ঠিক আছে, এটি পড়ার পরে, আমি সম্ভবত সমান্তরাল একটি বিশদ জন্য উভয় পন্থা করব।


2

আমি প্রশ্নটি পুনরায় পড়ছিলাম - যদি আমার এটি সঠিক হয় তবে প্রতিটি রেকর্ডে আপনি ইনপুট হিসাবে পাবেন, বিভিন্ন মান ট্র্যাক করা হচ্ছে (প্যারামিটারআইডি ভিত্তিতে):

প্যারামিটারআইডি অন্য একটি সারণিকে বোঝায় যা ইনপুট কলামের শিরোনাম (200,00 202,50 205,00 ...) সঞ্চয় করে।

... আপনি কীভাবে ডেটার সাথে ইন্টারঅ্যাক্ট করছেন সে সম্পর্কে আমি পর্যাপ্ত পরিমাণে জানি না তবে আমি অন্য বিকল্পের সাথে যেতে আগ্রহী হব - প্রতিটি প্যারামিটার আইডির জন্য আলাদা টেবিল রাখব, এবং তারপরে প্রয়োজনে যদি এমন একটি মতামত থাকে যা বিস্তৃত (240 কলাম) সারণিতে তারিখ এবং অবস্থান অনুসারে বিভিন্ন বিভিন্ন পরামিতিগুলিতে যোগদান করুন; যদি ডেটাআইডিআইডিটিকে দেখার জন্য অ্যাক্সেসযোগ্য রাখা গুরুত্বপূর্ণ ছিল, তবে আপনি এগুলির UNIONপরিবর্তে একটি ব্যবহার করতে পারেন JOIN, তবে কলামগুলি খুব কম জনবহুল হবে।


প্যারামিটার দ্বারা আমি কলামের শিরোনাম বা তরঙ্গদৈর্ঘ্য বলতে চাইছি। আমি এটি এইভাবে করার কথা ভেবেছিলাম, তবে 240 টেবিল লাগলে কিছুটা ক্লিঙ্কি অনুভূত হয় :)
জেমস

@ জেমস ... এটি 240 টেবিল হওয়া উচিত নয় ... কেবলমাত্র অনন্য ParameterID। এরপরে দৃশ্যটি আপনার পরিমাপযুক্ত পৃথক তরঙ্গদৈর্ঘ্যের সংখ্যার মতো বিস্তৃত হবে (প্লাস ইন্ডিপেন্ডেন্ট ভেরিয়েবল)। ... আপনি দেখতে চাইতে পারেন যে অপেনড্যাপ সম্প্রদায় কীভাবে জিনিসগুলি পরিচালনা করে, যেমন তারা সময় সিরিজের ডেটাগুলির দিকে তত্পর হয় । আমি যে ডেটাগুলি নিয়ে কাজ করি সেগুলির বেশিরভাগগুলি হ'ল চিত্র (দূরবীন, করোনোগ্রাফ, চৌম্বক), তাই তাদের স্টাফগুলি আমার কাজের সাথে খাপ খায় না, সুতরাং তারা কীভাবে স্টোরেজ পরিচালনা করে তা আমি জানি না। (এটি কেবল এইচডিএফ / সিডিএফ / নেটসিডিএফ / এএসসিআইআই টেবিল হতে পারে)।
জো

দুর্ভাগ্যক্রমে 240-ইশ অনন্য প্যারামিটার রয়েছে :( লিঙ্কটির জন্য ধন্যবাদ :)
জেমস

@ জেমস: এছাড়াও, এটি কি অনর্থক ডেটা? যদি তা হয় তবে আপনি এলআইএসআইআরডি- তে লোকদের জিজ্ঞাসা করতে চাইতে পারেন ... আমার ধারণা তারা পরীক্ষার মাধ্যমে এটিকে পৃথক উপাত্তগুলিতে পৃথক করে এবং আমি এটি জানি না যে তারা এটি ডাটাবেসগুলিতে রাখে বা কেবল ফ্ল্যাট ফাইলগুলিতে।
জো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.