ঠিক আছে, সুতরাং এটি অন্যান্য উত্তরগুলি থেকে কিছুটা দূরে, তবে ... এটি আমার কাছে মনে হয় যদি আপনার কাছে কোনও ফাইল সিস্টেমে ডেটা থাকে (ফাইলের প্রতি একটি স্টক, সম্ভবত) একটি নির্দিষ্ট রেকর্ড আকারের সাথে থাকে তবে আপনি ডেটা পেতে পারেন সত্যিই সহজে: একটি নির্দিষ্ট স্টক এবং সময়সীমার জন্য একটি কোয়েরি দেওয়া হয়েছে, আপনি সঠিক জায়গায় সন্ধান করতে পারেন, আপনার প্রয়োজনীয় সমস্ত ডেটা আনতে পারেন (আপনি ঠিক কতটা বাইট জানেন) আপনার প্রয়োজনীয় বিন্যাসে ডেটা রূপান্তর করতে পারেন (যা পারে আপনার স্টোরেজ ফরম্যাটের উপর নির্ভর করে খুব দ্রুত থাকুন) এবং আপনি দূরে রয়েছেন।
আমি অ্যামাজন স্টোরেজ সম্পর্কে কিছুই জানিনা, তবে আপনার যদি সরাসরি ফাইল অ্যাক্সেসের মতো কিছু না থাকে তবে আপনার মূলত ব্লব থাকতে পারে - আপনার বড় ব্লবগুলিতে ভারসাম্য বজায় রাখতে হবে (কম রেকর্ড, তবে সম্ভবত আপনার প্রতিটি প্রয়োজনের চেয়ে বেশি ডেটা পড়া সময়) ছোট ব্লব সহ (আরও রেকর্ডগুলি আরও ওভারহেড দেয় এবং সম্ভবত সেগুলিতে আরও বেশি অনুরোধ জানায়, তবে প্রতিটি সময় কম অকেজো ডেটা ফিরে আসে)।
এরপরে আপনি ক্যাচিং যুক্ত করুন - আমি উদাহরণস্বরূপ হ্যান্ডেল করার জন্য বিভিন্ন সার্ভারকে বিভিন্ন স্টক দেওয়ার পরামর্শ দিচ্ছি - এবং আপনি স্মৃতি থেকে কেবলমাত্র পরিবেশন করতে পারেন। আপনি যদি পর্যাপ্ত সার্ভারগুলিতে পর্যাপ্ত মেমরির সামর্থ্য রাখতে পারেন, "চাহিদার উপর লোড" অংশটি বাইপাস করুন এবং শুরু করার সময় সমস্ত ফাইল লোড করুন। ধীরে ধীরে স্টার্ট-আপ ব্যয় করে এটি জিনিসগুলিকে সরল করে তুলবে (যা স্পষ্টতই ব্যর্থতার উপর প্রভাব ফেলে, যদি না আপনি সবসময় দু'বার রাখতে সক্ষম হন কোনও নির্দিষ্ট স্টকের জন্য সার্ভার রাখতে সক্ষম হন, যা সহায়ক হবে)।
মনে রাখবেন যে প্রতিটি রেকর্ডের জন্য আপনার স্টক প্রতীক, তারিখ বা মিনিট সংরক্ষণ করার দরকার নেই - কারণ সেগুলি আপনার লোড করা ফাইল এবং ফাইলের মধ্যে অবস্থানের মধ্যে অন্তর্ভুক্ত। প্রতিটি মানের জন্য আপনার কী নির্ভুলতা প্রয়োজন এবং সেই দক্ষতার সাথে কীভাবে সংরক্ষণ করবেন তাও আপনার বিবেচনা করা উচিত - আপনি আপনার প্রশ্নে 6 এসএফ দিয়েছেন যা আপনি 20 বিটে সংরক্ষণ করতে পারেন store সম্ভাব্যত তিন বিট বিট পূর্ণসংখ্যার 64 বিট স্টোরেজে সংরক্ষণ করুন: এটি একটি long(বা আপনার 64-বিট পূর্ণ সংখ্যার মান যাই হোক না কেন) পড়ুন এবং এটি তিনটি পূর্ণসংখ্যায় ফিরে পেতে মাস্কিং / শিফটিং ব্যবহার করুন। অবশ্যই কোন স্কেলটি ব্যবহার করতে হবে তা আপনার অবশ্যই জানতে হবে - যা আপনি সম্ভবত অতিরিক্ত 4 বিটগুলিতে এনকোড করতে পারেন, যদি আপনি এটি ধ্রুবক না করতে পারেন।
অন্য তিনটি সংখ্যার কলামগুলি কী রকম তা আপনি বলেননি, তবে আপনি যদি সেই তিনটির জন্য b৪ বিট পেয়েও যেতে পারেন তবে আপনি একটি পুরো রেকর্ডটি 16 বাইটে সঞ্চয় করতে পারবেন। পুরো ডাটাবেসের জন্য এটি কেবলমাত্র 110 গিগাবাইট, যা আসলে খুব বেশি নয় ...
সম্পাদনা: অন্য বিষয় বিবেচনা করার বিষয়টি হ'ল সম্ভবত সপ্তাহান্তে - বা সত্যই রাতারাতি স্টকের কোনও পরিবর্তন হয় না। যদি শেয়ার বাজারটি কেবল প্রতিদিন 8 ঘন্টা খোলা থাকে, প্রতি সপ্তাহে 5 দিন, তবে আপনার কেবল 168 এর পরিবর্তে প্রতি সপ্তাহে 40 টি মান দরকার that সেই সময়ে আপনি কেবল আপনার ফাইলগুলিতে প্রায় 28GB ডেটা দিয়ে শেষ করতে পারেন ... যা শোনাচ্ছে আপনার চেয়ে অনেক ছোট সম্ভবত সম্ভবত ভাবছিলেন। মেমরিতে প্রচুর ডেটা থাকা খুব যুক্তিসঙ্গত।
সম্পাদনা: আমি মনে করি যে এখানে কেন এই পদ্ধতিরটি খুব উপযুক্ত of তার ব্যাখ্যাটি আমি এড়িয়ে গেছি: আপনার ডেটার একটি বড় অংশের জন্য একটি খুব অনুমানযোগ্য দিক পেয়েছেন - স্টক টিকার, তারিখ এবং সময়। একবার টিকারটি প্রকাশের মাধ্যমে (ফাইলের নাম হিসাবে) এবং তারিখ / সময় পুরোপুরি ডেটার অবস্থানের সাথে অন্তর্ভুক্ত রেখে আপনি পুরো কাজটি সরিয়ে ফেলছেন। এটি একটি String[]এবং এ এর মধ্যে পার্থক্যের মতো Map<Integer, String>- আপনার অ্যারে সূচকটি সর্বদা 0 থেকে শুরু হয় এবং অ্যারের দৈর্ঘ্য পর্যন্ত 1 বৃদ্ধি হয় এবং দ্রুত অ্যাক্সেস এবং আরও দক্ষ স্টোরেজ করতে দেয় knowing