7.3 বিলিয়ন সারি বাজারের ডেটা কীভাবে সংরক্ষণ করা যায় (পড়ার জন্য অনুকূলিত হয়েছে)?


86

১৯৯৯ সাল থেকে আমার কাছে 1000 স্টকের 1 মিনিটের ডেটাসেট রয়েছে, এটি মোট (2012-1998)*(365*24*60)*1000 = 7.3 Billionসারির চারপাশে ।

বেশিরভাগ সময় (99.9%) আমি কেবল পঠনের অনুরোধগুলি সম্পাদন করব ।

কোনও ডেবিতে এই ডেটা সংরক্ষণ করার সর্বোত্তম উপায় কী?

  • 7.3 বি সারি সহ 1 টি বড় টেবিল?
  • প্রতিটি 7.3M সারি সহ 1000 টি টেবিল (প্রতিটি স্টক প্রতীকের জন্য একটি)?
  • ডাটাবেস ইঞ্জিনের কোনও সুপারিশ? (আমি অ্যামাজন আরডিএস 'মাইএসকিউএল ব্যবহার করার পরিকল্পনা করছি)

আমি এই বড় ডেটাসেটগুলির সাথে ডিল করতে ব্যবহার করি না, তাই এটি আমার শেখার একটি দুর্দান্ত সুযোগ। আমি আপনার সাহায্য এবং পরামর্শ অনেক প্রশংসা করব।

সম্পাদনা করুন:

এটি একটি নমুনা সারি:

'এক্সএক্স', 20041208, 938, 43.7444, 43.7541, 43.735, 43.7444, 35116.7, 1, 0, 0

কলাম 1 হ'ল স্টক প্রতীক, কলাম 2 তারিখ, 3 কলামটি মিনিট, বাকিগুলি ওপেন-হাই-লো-ক্লোজড দাম, ভলিউম এবং 3 পূর্ণসংখ্যা কলাম।

বেশিরভাগ ক্যোয়ারী হবে "এপ্রিল 12 2012 12:15 এবং 13 এপ্রিল 2012 12:52 এর মধ্যে আমাকে এপিএলের দাম দিন"

হার্ডওয়্যার সম্পর্কে: আমি অ্যামাজন আরডিএস ব্যবহার করার পরিকল্পনা করছি যাতে আমি এতে নমনীয়


4
প্রত্যাশিত সাধারণ কোয়েরি বর্ণনা করুন
উইলিয়াম পার্সেল

10
"আমি মনে করি আপনার মঙ্গোডিবি ব্যবহার করা উচিত কারণ এটি ওয়েব স্কেল।"
ta.speot.is

8
আপনি সম্ভবত একটি বড় টেবিল চান, স্টক প্রতীক দ্বারা বিভক্ত।
ta.speot.is

4
ডেটাসেট বিশাল! আপনি যা সন্ধান করছেন তা দেখতে আপনি ডেটামাইনিং এবং বিশ্লেষণের জন্য আশেপাশে অনুসন্ধান করতে চাইতে পারেন।
মাইক পার্সেল

4
এবং একটি একক টেবিল সহ একটি "স্ট্যান্ডার্ড আরডিবিএমএস" এর জন্য অপর্যাপ্ত? (আমি কেবল লক্ষ

উত্তর:


29

অনুসন্ধানগুলি এবং আপনার হার্ডওয়্যার পরিবেশ সম্পর্কে আমাদের বলুন।

যতক্ষণ না আপনি সমান্তরালতার সুবিধা নিতে পারেন ততক্ষণ আমি হ্যাডোপ বা অনুরূপ কিছু ব্যবহার করে নোএসকিউএল যাবার জন্য খুব প্ররোচিত হব ।

হালনাগাদ

ঠিক আছে, কেন?

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

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

  • আপনি যদি ওএলএপি জগতের অনেকগুলি ডেটার বিরুদ্ধে কার্যকরভাবে বড় রানগুলি করেন তবে, কলাম-ওরিয়েন্টেড পদ্ধতির সেরা হতে পারে।

  • আপনি যদি এলোমেলোভাবে অনুসন্ধান করতে চান, বিশেষত ক্রস-তুলনা করা, একটি হ্যাডোপ সিস্টেম কার্যকর হতে পারে। কেন? কারণ

    • তুলনামূলকভাবে ছোট পণ্য হার্ডওয়্যার উপর সমান্তরালতা আরও ভালভাবে কাজে লাগাতে পারেন।
    • আপনি উচ্চ নির্ভরযোগ্যতা এবং অপ্রয়োজনীয়তা আরও ভালভাবে প্রয়োগ করতে পারেন
    • এই সমস্যাগুলির মধ্যে অনেকগুলি নিজেকে প্রাকৃতিকভাবে মানচিত্রের উপমা হিসাবে ndণ দেয়।

তবে আসল বিষয়টি হ'ল যতক্ষণ না আমরা আপনার কাজের চাপ সম্পর্কে জানব, ততক্ষণ নির্দিষ্ট কিছু বলা অসম্ভব।


7
"NoSQL" এখানে কী সুবিধা দেয়? Traditionalতিহ্যবাহী আরডিবিএমএসে কেন একটি বড় টেবিল নয় ? (সঠিক সূচিপত্র ইত্যাদি সহ) প্রত্যেকে "NoSQL", "NoSQL", "NoSQL" যায়, তবে ... কেন ?

4
আমার বলতে হবে যে আমার পরামর্শটি অ্যাপাচি অ্যাকুমুলো (এটি ব্যক্তিগত পছন্দ) ব্যবহার করে কোনও নুএসকিউএল পদ্ধতিও হবে। ডেটাসেটের ছোট (আকুমুলোর জন্য) এবং প্রয়োজনীয় ধরণের প্রশ্নের জন্য এটি বিতরণকৃত পুনরায় স্ট্যাক ব্যবহার করে একেবারে উপযুক্ত মনে হয়।
বাইনারি Nerd

প্রসারিত উত্তরের জন্য ধন্যবাদ। আমি এটি +1 করতে পারি।

4
কখনও কখনও এখানে কিছু মন্তব্য কেবল আমাকে বিভ্রান্ত করে। '-1 কোনও ডাটাবেস ব্যবহারের জন্য যেখানে এটি বোঝা যায় না?' পুরো উত্তরটি একটি traditionalতিহ্যবাহী ডাটাবেসের বিরুদ্ধে তর্ক করে।
চার্লি মার্টিন

52

সুতরাং ডাটাবেসগুলি এমন পরিস্থিতিতে রয়েছে যেখানে আপনার একটি বৃহত জটিল স্কিমা রয়েছে যা নিয়মিত পরিবর্তন হয়। আপনার কাছে কেবল একটি সাধারণ সারণী সহ একটি পূর্ণ "টেবিল" রয়েছে। আমি এটি এইভাবে করব:

রেকর্ড ফর্ম্যাটটি ধরে রাখতে একটি সি / সি ++ স্ট্রাক্ট প্রস্তুত করুন:

struct StockPrice
{
    char ticker_code[2];
    double stock_price;
    timespec when;
    etc
};

তারপরে আকারের (স্টকপ্রিস [এন]) গণনা করুন যেখানে এন রেকর্ডের সংখ্যা। (একটি 64৪-বিট সিস্টেমে) এটি কেবল কয়েকশ গিগ থাকতে হবে এবং এটি $ 50 এইচডিডিতে ফিট করতে হবে।

তারপরে সেই ফাইলের আকার এবং এমএম্যাপের একটি ফাইল কেটে ফেলুন (লিনাক্সের উপর, বা উইন্ডোতে ক্রিয়েফাইলম্যাপিং ব্যবহার করুন) এটি মেমোরিতে:

//pseduo-code
file = open("my.data", WRITE_ONLY);
truncate(file, sizeof(StockPrice[N]));
void* p = mmap(file, WRITE_ONLY);

স্ট্যামপ্রাইস * এ এমএমেড পয়েন্টারটি কাস্ট করুন, এবং আপনার ডেটা অ্যারে পূরণ করে কিছু দিন। এমএমএপ বন্ধ করুন এবং এখন আপনার কাছে একটি ফাইলের একটি বড় বাইনারি অ্যারে থাকবে যা পরে আবার এমএমপ করা যায় can

StockPrice* stocks = (StockPrice*) p;
for (size_t i = 0; i < N; i++)
{
    stocks[i] = ParseNextStock(stock_indata_file);
}
close(file);

আপনি এখন এটি কোনও এমএমএপ করতে পারবেন কেবল কোনও প্রোগ্রাম থেকে পঠনযোগ্য এবং আপনার ডেটা সহজেই উপলভ্য হবে:

file = open("my.data", READ_ONLY);
StockPrice* stocks = (StockPrice*) mmap(file, READ_ONLY);

// do stuff with stocks;

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

যদি আপনি একটি নির্দিষ্ট অ্যাক্সেস প্যাটার্নের আশা করেন (উদাহরণস্বরূপ স্বাক্ষরিত তারিখ) তবে ক্রমটিকে অ্যারে বাছাই করা ভাল তবে এটি ডিস্কটিকে ধারাবাহিকভাবে আঘাত করবে।


12
এটি হার্ড ডিস্কের পরিবর্তে এসএসডি-তে রাখার জন্য কয়েকশ 'ব্যয় করুন। এলোমেলো পড়া প্রায় একশগুণ দ্রুত faster অথবা 10 কে রামে ব্যয় করুন। আরও
একশগুণ

4
@ অ্যান্ড্রু তোমাজোস ধন্যবাদ বধূ, এই "উত্তর"
পবনেত_সিংহ

4
স্টকপ্রিসের আকারের আকার হবে চার [4] = 4 বাইট ইনট = 4 বাইট শর্ট = 2 বাইট ফ্লোট = 4 বাইট ফ্লোট = 4 বাইট ফ্লোট = 4 বাইট ফ্লোট = 4 বাইট ফ্লোট = 4 বাইট ইনট = 4 বাইট ইনট = 4 বাইট ইনট = 4 বাইটস ------------ 42 বাইটস প্রায় 306.6 বিলিয়ন বাইট = ~ 285.5435013771057 গিগাবাইট মেমরি ... এর সাথে শুভকামনা
ZagNut

4
@ জাগনট: যদি আপনার জড়িত বিষয়টি আপনার যদি 300 গিগাবাইট শারীরিক মেমরির প্রয়োজন হয় তবে এটি সঠিক নয় - এমএমএপ পুরো জিনিসটিকে মেমরিতে অনুলিপি করে না, এটি এটি প্রয়োজন অনুসারে আউট / আউট করে দেয় (অদলবদলের মত একই ফ্যাশনে) ।
অ্যান্ড্রু তোমাজস

35

আমার কাছে 1000 স্টকের 1 মিনিটের ডেটা রয়েছে [...] বেশিরভাগ (99.9%) আমি কেবল পঠন অনুরোধগুলি সম্পাদন করব ।

একবারে সঞ্চয় এবং বহুবার সময় ভিত্তিক সংখ্যাসূচক তথ্য পড়া একটি ব্যবহারের ক্ষেত্রে "সময় সিরিজ" বলে অভিহিত করা হয়। অন্যান্য সাধারণ সময় সিরিজ হ'ল ইন্টারনেট অফ থিংসে সেন্সর ডেটা, সার্ভার মনিটরিং স্ট্যাটিস্টিক্স, অ্যাপ্লিকেশন ইভেন্টস ইত্যাদি are

এই প্রশ্নটি ২০১২ সালে জিজ্ঞাসা করা হয়েছিল এবং তার পর থেকে বেশ কয়েকটি ডাটাবেস ইঞ্জিন বিশেষত সময় সিরিজ পরিচালনার জন্য বৈশিষ্ট্য বিকাশ করছে। আমি ইনফ্লুডসডিবি'র সাথে দুর্দান্ত ফলাফল পেয়েছি , যা খোলা উত্সাহিত, গোতে লেখা এবং এমআইটি-লাইসেন্সযুক্ত।

ইনফ্লাক্সডিবি সময় সিরিজের ডেটা সঞ্চয় এবং অনুসন্ধানের জন্য বিশেষভাবে অনুকূলিত হয়েছে। ক্যাসান্দ্রার চেয়ে অনেক বেশি , যা সময় সিরিজ সংরক্ষণের জন্য প্রায়শই দুর্দান্ত হিসাবে ধরা হয়:

ইনফ্লুডডিবি বনাম ক্যাসান্দ্রা ক্যোয়ারী গতি

সময় ধারাবাহিকের জন্য অনুকূলিতকরণে কিছু নির্দিষ্ট বাণিজ্য জড়িত। উদাহরণ স্বরূপ:

বিদ্যমান ডেটাতে আপডেট হওয়া বিরল ঘটনা এবং বিতর্কিত আপডেটগুলি কখনই ঘটে না। সময় সিরিজের ডেটা মূলত নতুন ডেটা যা কখনও আপডেট হয় না।

প্রো: আপডেটগুলিতে অ্যাক্সেসকে সীমাবদ্ধ করা বর্ধিত ক্যোয়ারী এবং লেখার পারফরম্যান্সের অনুমতি দেয়

কন: আপডেট কার্যকারিতা উল্লেখযোগ্যভাবে সীমাবদ্ধ

ইন ওপেন সোর্সড benchmarks ,

ইনফ্লুডডিবি তিনটি পরীক্ষায় 27x বৃহত্তর রাইটিং থ্রুপুট দিয়ে দক্ষতা অর্জন করেছিল, যখন 84x কম ডিস্ক স্পেস ব্যবহার করে, এবং যখন অনুসন্ধানের গতিতে আসে তখন তুলনামূলকভাবে সমান পারফরম্যান্স সরবরাহ করে।

ইনফ্লুডডিবি বনাম মোংগোডিবি অন ডিস্ক স্টোরেজ প্রয়োজনীয়তা এবং সংক্ষেপণ

প্রশ্নগুলিও খুব সহজ। যদি আপনার সারিগুলি দেখতে দেখতে <symbol, timestamp, open, high, low, close, volume>, InfluxDB এর সাহায্যে আপনি কেবল এটি সঞ্চয় করতে পারেন তবে সহজেই জিজ্ঞাসা করুন। বলুন, শেষ 10 মিনিটের ডেটার জন্য:

SELECT open, close FROM market_data WHERE symbol = 'AAPL' AND time > '2012-04-12 12:15' AND time < '2012-04-13 12:52'

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


4
অন্যান্য সময় সিরিজের ডাটাবেস যেমন কেডিবি +, এম 3 ডিবি বা ভিক্টোরিয়া মেট্রিক্স রয়েছে , যা উত্পাদন কাজের চাপের অধীনে সহজেই একক নোডে ট্রিলিয়নস সারিগুলি পরিচালনা করতে পারে। Github.com
ভিক্টোরিয়া

@ ভালয়াল: ভিক্টোরিয়া মেট্রিক্স দুর্দান্ত দেখাচ্ছে! আমি পোস্ট করার পর থেকে আমি ইনফ্লুডসডিবিতে অসংখ্য সমস্যা পেয়েছি ; যদিও ভিক্টোরিয়া
মেট্রিক্স

17

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

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

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

মনে রাখবেন যে প্রতিটি রেকর্ডের জন্য আপনার স্টক প্রতীক, তারিখ বা মিনিট সংরক্ষণ করার দরকার নেই - কারণ সেগুলি আপনার লোড করা ফাইল এবং ফাইলের মধ্যে অবস্থানের মধ্যে অন্তর্ভুক্ত। প্রতিটি মানের জন্য আপনার কী নির্ভুলতা প্রয়োজন এবং সেই দক্ষতার সাথে কীভাবে সংরক্ষণ করবেন তাও আপনার বিবেচনা করা উচিত - আপনি আপনার প্রশ্নে 6 এসএফ দিয়েছেন যা আপনি 20 বিটে সংরক্ষণ করতে পারেন store সম্ভাব্যত তিন বিট বিট পূর্ণসংখ্যার 64 বিট স্টোরেজে সংরক্ষণ করুন: এটি একটি long(বা আপনার 64-বিট পূর্ণ সংখ্যার মান যাই হোক না কেন) পড়ুন এবং এটি তিনটি পূর্ণসংখ্যায় ফিরে পেতে মাস্কিং / শিফটিং ব্যবহার করুন। অবশ্যই কোন স্কেলটি ব্যবহার করতে হবে তা আপনার অবশ্যই জানতে হবে - যা আপনি সম্ভবত অতিরিক্ত 4 বিটগুলিতে এনকোড করতে পারেন, যদি আপনি এটি ধ্রুবক না করতে পারেন।

অন্য তিনটি সংখ্যার কলামগুলি কী রকম তা আপনি বলেননি, তবে আপনি যদি সেই তিনটির জন্য b৪ বিট পেয়েও যেতে পারেন তবে আপনি একটি পুরো রেকর্ডটি 16 বাইটে সঞ্চয় করতে পারবেন। পুরো ডাটাবেসের জন্য এটি কেবলমাত্র 110 গিগাবাইট, যা আসলে খুব বেশি নয় ...

সম্পাদনা: অন্য বিষয় বিবেচনা করার বিষয়টি হ'ল সম্ভবত সপ্তাহান্তে - বা সত্যই রাতারাতি স্টকের কোনও পরিবর্তন হয় না। যদি শেয়ার বাজারটি কেবল প্রতিদিন 8 ঘন্টা খোলা থাকে, প্রতি সপ্তাহে 5 দিন, তবে আপনার কেবল 168 এর পরিবর্তে প্রতি সপ্তাহে 40 টি মান দরকার that সেই সময়ে আপনি কেবল আপনার ফাইলগুলিতে প্রায় 28GB ডেটা দিয়ে শেষ করতে পারেন ... যা শোনাচ্ছে আপনার চেয়ে অনেক ছোট সম্ভবত সম্ভবত ভাবছিলেন। মেমরিতে প্রচুর ডেটা থাকা খুব যুক্তিসঙ্গত।

সম্পাদনা: আমি মনে করি যে এখানে কেন এই পদ্ধতিরটি খুব উপযুক্ত of তার ব্যাখ্যাটি আমি এড়িয়ে গেছি: আপনার ডেটার একটি বড় অংশের জন্য একটি খুব অনুমানযোগ্য দিক পেয়েছেন - স্টক টিকার, তারিখ এবং সময়। একবার টিকারটি প্রকাশের মাধ্যমে (ফাইলের নাম হিসাবে) এবং তারিখ / সময় পুরোপুরি ডেটার অবস্থানের সাথে অন্তর্ভুক্ত রেখে আপনি পুরো কাজটি সরিয়ে ফেলছেন। এটি একটি String[]এবং এ এর মধ্যে পার্থক্যের মতো Map<Integer, String>- আপনার অ্যারে সূচকটি সর্বদা 0 থেকে শুরু হয় এবং অ্যারের দৈর্ঘ্য পর্যন্ত 1 বৃদ্ধি হয় এবং দ্রুত অ্যাক্সেস এবং আরও দক্ষ স্টোরেজ করতে দেয় knowing


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

4
@ ওল্ফ ৫৩70০: হ্যাঁ, কোয়েরিগুলি কী হবে তা আমাদের অবশ্যই জানা উচিত, তবে আমাদের প্রশ্ন থেকে কমপক্ষে কিছু ইঙ্গিত রয়েছে: 'বেশিরভাগ প্রশ্ন "এএপিএলের দাম আমাকে 12 এপ্রিল 2012 12-15 এবং এর মধ্যে দিন" 13 এপ্রিল 2012 12:52 '। অন্যান্য জিজ্ঞাসাগুলি কী হবে সেই সাথে পাশাপাশি আপেক্ষিক ফ্রিকোয়েন্সি এবং পারফরম্যান্স প্রয়োজনীয়তাগুলিও জেনে ভাল লাগবে
জোন স্কীত

@ জোনস্কিট এটি সত্যই কাজের চাপের উপর নির্ভর করে, তবে আমি এই ধরণের সিস্টেম সম্পর্কে কিছু ডোমেন জ্ঞান পেয়েছি এবং এটি খুব কমই কেবল "একটি রেঞ্জের উপরে একটি স্টক নির্বাচন করুন": এটি প্রায়শই "এই পরিসরের উপরের এই পোর্টফোলিওতে স্টক নির্বাচন করে, গণনা ও বিটা; তারপরে সম্ভাব্য স্টকের এই তালিকাটি ব্যবহার করে দেখুন এবং তারপর কী & বিটা আছে তা "" এ কারণেই এটি আপনাকে ওএলএপি-জাতীয় কোনও দিকে চালিত করে।
চার্লি মার্টিন

4
@ চর্লিমার্টিন: ঠিক আমি প্রশ্নটি যা বলছিলাম তা দিয়েই চলেছি। তবে, আপনি যদি মূলত এটি সমস্ত কিছু মেমোরিতে পেতে পারেন (কয়েকটি সার্ভার জুড়ে) তবে এটি এখনও বেশ সহজ - প্রতিটি সার্ভারকে পোর্টফোলিওতে সম্পর্কিত স্টকগুলির জন্য জিজ্ঞাসা করুন, তারপরে ফলাফলগুলি একসাথে রেখে দিন put আমি মনে করি তথ্যগুলির জ্ঞাত দিকগুলি ব্যবহারের বিষয়ে আমার বক্তব্য (একবারে প্রতি মিনিটে, তবে সপ্তাহান্তে বা রাত্রে নয়) এটি সমস্ত স্মরণে রাখার অসুবিধা হ্রাস করার ক্ষেত্রে এখনও কার্যকর reducing
জন স্কিটি

এই আলোচনাটি ফ্রেড ব্রুকসের উক্তি, "প্রতিনিধিত্ব প্রোগ্রামিংয়ের মূলমন্ত্র" এবং বেন্টলির 'প্রোগ্রামিং পার্লস' সম্পর্কিত সম্পর্কিত সমস্যাগুলির কথা মনে করিয়ে দেয়।
সিএস

14

এটি আমার বোঝার মতো যে এইচডিএফ 5 একটি সম্ভাব্য অ্যাপ্লিকেশন হিসাবে স্টক ডেটাগুলির টাইম-সিরিজ স্টোরেজের সাথে বিশেষভাবে ডিজাইন করা হয়েছিল। ফেলো স্ট্যাকাররা প্রমাণ করেছেন যে এইচডিএফ 5 প্রচুর পরিমাণে ডেটা: ক্রোমোসোম , পদার্থবিজ্ঞানের জন্য ভাল


4
নির্দিষ্ট সমাধানের জন্য +1। তবে আমি এসকিউএল ডিকিউএল (বেশিরভাগ অংশের জন্য) এবং এটির যে নমনীয়তা অনুভব করি তা পছন্দ করি ... নিশ্চিত নই যে "শ্রেণিবদ্ধ দৃষ্টিভঙ্গি" থেকে সরে যাওয়ার জন্য এইচডিএফ 5 এর সাথে কী প্রয়োজন।

4

মাইক্রোসফ্ট এসকিউএল সার্ভার ২০১২ ডাটাবেসের শীর্ষে একটি মার্কেট ডেটা সার্ভার তৈরির চেষ্টা করা যা ওএলএপি বিশ্লেষণের জন্য ভাল হওয়া উচিত, একটি মুক্ত ওপেন সোর্স প্রকল্প:

http://github.com/kriasoft/market-data


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

4

প্রথমত, বছরে ৩5৫ টি ট্রেডিং দিন নেই, ছুটির দিনে 52 সাপ্তাহিক ছুটির দিন (104) = 250 x কে বলুন যে দিনের বাজারের আসল ঘন্টাগুলি কারো বলেছে, এবং প্রাথমিক কী হিসাবে প্রতীকটি ব্যবহার করা ভাল ধারণা নয় যেহেতু প্রতীকগুলি পরিবর্তিত হয়, একটি চিহ্ন (চর) সহ একটি k_equity_id (সংখ্যাসূচক) ব্যবহার করুন যেহেতু প্রতীকগুলি এ, বা GAC-DB-B.TO এর মতো হতে পারে, তারপরে আপনার মূল্য তথ্যের টেবিলগুলিতে আপনার রয়েছে, সুতরাং আপনার অনুমান 7.3 বিলিয়ন বিস্তৃতভাবে গণনা করা হয়েছে যেহেতু এটি 14 বছরের জন্য প্রতি চিহ্নে প্রায় 1.7 মিলিয়ন সারি।

k_equity_id k_date k_minute

এবং ইওডি টেবিলের জন্য (এটি অন্যান্য ডেটাতে 1000x দেখা যাবে)

k_equity_id k_date

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


3

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

"Give me the prices of AAPL between April 12 2012 12:15 and April 13 2012 12:52"

যেমন কিছু অনুবাদ করতে হবে:

?q=stock:AAPL AND date:[2012-04-12T12:15:00Z TO 2012-04-13T12:52:00Z]

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


আপনি নিজের সোলার উদাহরণটি সেট আপ করতে অ্যামাজন ইসি 2 ব্যবহার করতে পারেন ... lucidimagination.com/blog/2010/02/01/…
উপসর্গচর্চা

4
এসএলআর অনুসন্ধানের জন্য দুর্দান্ত কাজ করে তবে সূচকগুলি জনবসতি করতে আপনার এখনও কোথাও ডেটা সংরক্ষণ করতে হবে।
মাইক পার্সেল

সত্য। আমি ধরে নিয়েছি যে ভিক্টর পি এর কোথাও ডেটা রয়েছে এবং এটি সূচী করা দরকার। এর জন্য অতিরিক্ত সংস্থান প্রয়োজন ... তবে প্রস্তাবিত সমস্ত পদ্ধতির পাশাপাশি এটিও করা হয়।
উলাম্ম্রিচপস

@ এলিয়াসম্রিচিপস: আমি মনে করি ইনফ্লাক্সডিবি পদ্ধতি আরও ভাল করে - এটি উভয়ই দক্ষতার সাথে সঞ্চয় করে (হাই থ্রুপুট, মঙ্গোর চেয়ে 80x ভাল সংক্ষেপণ), এবং সহজেই অনুসন্ধান করে।
ড্যান ড্যাসক্লেস্কু

3

আমি মনে করি যে কোনও বড় আরডিবিএমএস এটি পরিচালনা করবে। পারমাণবিক স্তরে, সঠিক পার্টিশনযুক্ত একটি টেবিল যুক্তিসঙ্গত বলে মনে হয় (আপনার ডেটা ব্যবহারের ভিত্তিতে পার্টিশন স্থির হয়ে থাকলে - এটি প্রতীক বা তারিখের মতোই নয়)।

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

আমার ধারণা ডেটা ব্যবহারের ক্ষেত্রে আমরা আপনাকে কিছু ধারণা দিয়ে আরও সহায়তা করতে পারি।


3

আপনার ধীর সমাধানগুলি মেমরির মডেলটিতে একটি অনুকূল অনুকূলিতকরণের সাথে তুলনা করা উচিত। সঙ্কুচিত এটি 256 জিবি র‌্যাম সার্ভারে ফিট করে fits একটি স্ন্যাপশট 32 কে ফিট করে এবং আপনি কেবলমাত্র তারিখের সময় এবং স্টকে অবস্থানিকভাবে এটি সূচী করে। তারপরে আপনি বিশেষায়িত স্ন্যাপশট তৈরি করতে পারেন, যেমন একটি খোলা থাকলে প্রায়শই আগেরটির সমাপ্তি সমান হয়।

[সম্পাদনা] আপনি কেন মনে করেন যে কোনও ডাটাবেস (आरডিবিএম বা নোসকিএল) ব্যবহার করা মোটেই বুদ্ধিমান? এই ডেটা পরিবর্তন হয় না, এবং এটি মেমরির সাথে ফিট করে। এটি কোনও ব্যবহারের ক্ষেত্রে নয় যেখানে কোনও dbms মান যুক্ত করতে পারে।


প্রকৃতপক্ষে, বেশ কয়েকটি কারণ রয়েছে, কমপক্ষে এটি হ'ল না যে আপনার যদি 256 গিগাবাইট মেমরি থাকে তবে টেম্প স্পেস, অপারেটিং সিস্টেম ইত্যাদির জন্য কিছু জায়গা থাকলে ভাল লাগবে be তারপরে চেকপয়েন্টিং, লগিং এবং দোষ সহ্য করার মতো সমস্যা রয়েছে - একবার আপনি যখন কোনও মধ্যবর্তী ফলাফলের গণনা শুরু করেন তখন আপনি স্টোরেজ পরিচালনা করার জন্য প্রয়োজনীয় হন। আমি সম্মত হই যে কোনও আরডিবিএমএস সেরা পছন্দ নয় - তবে "মেমরিতে বড় অ্যারে লোড করুন" এর চেয়ে স্মার্ট কিছু হ'ল একেবারে প্রয়োজন।
চার্লি মার্টিন

চেকপয়েন্টিং, লগিং এবং ত্রুটি সহিষ্ণুতা কাছাকাছি স্থির তথ্যের জন্য অত্যন্ত সহজ। এটি প্রপায়ার স্টাইল সমাধানের জন্য আদর্শ ফিট হিসাবে মনে হচ্ছে
স্টিফান

আবার, অ্যাপ্লিকেশন সম্পর্কে আরও ভাল জ্ঞান ছাড়া নিশ্চিতভাবে বলা সম্ভব নয়, তবে সাধারণভাবে, অ্যাপ্লিকেশনটি আপনার মনে হয় ঠিক তেমন স্থির নয়, কারণ আপনি ফলাফলের সেটগুলি বজায় রাখতে চান এবং আপনি আবার ব্যয়বহুল গণনা করছেন বলে because , চেকপয়েন্টিং এবং প্রাক-গণিত আংশিক ফলাফল।
চার্লি মার্টিন 13

2

আপনার যদি হার্ডওয়্যার থাকে তবে আমি মাইএসকিউএল ক্লাস্টারের প্রস্তাব দিই । আপনি মাইএসকিউএল / আরডিবিএমএস ইন্টারফেস পাবেন যার সাথে আপনি এতটা পরিচিত এবং আপনি দ্রুত এবং সমান্তরাল লেখাগুলি পান। নেটওয়ার্কের বিলম্বতার কারণে পড়াগুলি নিয়মিত মাইএসকিউএল এর চেয়ে ধীরে ধীরে হবে তবে মাইএসকিউএল ক্লাস্টার এবং এনডিবি স্টোরেজ ইঞ্জিন যেভাবে কাজ করে তার কারণে আপনার প্রশ্নের সাদৃশ্য তৈরি করতে এবং পড়ার সুবিধা পাবেন।

আপনার প্রত্যেকের জন্য পর্যাপ্ত মাইএসকিউএল ক্লাস্টার মেশিন এবং পর্যাপ্ত মেমরি / র‌্যাম রয়েছে তা নিশ্চিত করুন - মাইএসকিউএল ক্লাস্টার একটি ভারী মেমরি-ভিত্তিক ডাটাবেস আর্কিটেকচার।

বা রেডিস , যদি আপনি আপনার পঠন / লেখার জন্য কোনও কী-মান / নোএসকিউএল ইন্টারফেস মনে করেন না। এটি নিশ্চিত করুন যে রেডিসের পর্যাপ্ত মেমরি রয়েছে - এটি পড়ার জন্য এবং লেখার জন্য অতি দ্রুত, আপনি এটির সাথে প্রাথমিক জিজ্ঞাসা করতে পারেন (যদিও আরডিবিএমএস নয়) তবে এটি একটি মেমরির ডাটাবেসও is

অন্যরা যেমন বলেছে, আপনি যে প্রশ্নগুলি চালাবেন সেগুলি সম্পর্কে আরও জানার সাহায্য করবে।


2

আপনি একটি কলামার টেবিল / ডাটাবেসে সঞ্চিত ডেটা চাইবেন । ভার্টিকা এবং গ্রিনপ্লামের মতো ডেটাবেস সিস্টেমগুলি কলামার ডাটাবেস এবং আমি বিশ্বাস করি যে এসকিউএল সার্ভার এখন কলামার সারণির জন্য অনুমতি দেয়। এগুলির জন্য অত্যন্ত দক্ষSELECT খুব বড় ডেটাসেট থেকে আইংয়ের । তারা বড় ডেটাসেট আমদানিতেও দক্ষ।

একটি বিনামূল্যে কলামার ডাটাবেস MonetDB হয়


1

আপনার ব্যবহারের ক্ষেত্রে যদি সমষ্টি ছাড়াই সরল পঠন সারণিতে হয় তবে আপনি অ্যারোস্পাইক ক্লাস্টার ব্যবহার করতে পারেন। অধ্যবসায়ের জন্য ফাইল সিস্টেমের সমর্থন সহ এটি মেমরি ডাটাবেসে রয়েছে। এটি এসএসডি অপ্টিমাইজডও।

যদি আপনার ব্যবহারের ক্ষেত্রে সামগ্রিক ডেটা প্রয়োজন হয় তবে তারিখের সীমা প্রশস্তকরণের সাথে মঙ্গো ডিবি ক্লাস্টারের জন্য যান। আপনি শার্ডে বছরের vise ডেটা ক্লাব করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.