বৃহত্তর (> 22 ট্রিলিয়ন আইটেম) জিওপ্যাসিয়াল ডেটাসেট দ্রুত (<1s) কোয়েরি কর্মক্ষমতা পড়ুন


20

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

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

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

এই প্রয়োজনীয়তাগুলি থেকে, ডাটাবেসটি স্কেলেযোগ্য হওয়া দরকার এবং আমরা মেঘ সমাধানগুলির দিকে তাকাতে পারি। সিস্টেমটি ভূ-স্থানিক প্রশ্নের যেমন "পয়েন্টের নিকটবর্তী (ল্যাট, লোন)" এবং "পয়েন্টগুলির মধ্যে (বাক্সে)" মোকাবেলা করতে সক্ষম হতে হবে এবং একটি বিন্দু চিহ্নিত করার জন্য <1s এর পারফরম্যান্স এবং বহুভুজ যা পড়তে সক্ষম তা পড়তে পারে 50,000 পয়েন্ট (যদিও 200,000 পয়েন্ট পর্যন্ত ভাল হবে)।

এখন পর্যন্ত আমার 111 মিলিয়ন লোকেশনে 50 750 মিলিয়ন ডেটা আইটেমের একটি পরীক্ষার ডেটা সেট রয়েছে। আমি একটি পোস্টগ্রিজ / পোস্টজিআইএস উদাহরণটি পরীক্ষা করেছি, যা ঠিক আছে, তবে আমি ধারালো হওয়ার সম্ভাবনা ছাড়াই এই তথ্যটি বাড়ার পক্ষে সক্ষম হব না I আমি একটি মঙ্গোডিবি উদাহরণও পরীক্ষা করেছি, যা আবার ঠিক আছে বলে মনে হয় দূরে, এবং শারডিং সহ এটি ডেটা ভলিউমের সাথে স্কেল করার জন্য যথেষ্ট হতে পারে। আমি ইলাস্টিক সন্ধান সম্পর্কে সম্প্রতি কিছুটা শিখেছি, সুতরাং এ সম্পর্কে যে কোনও মন্তব্য আমার পক্ষে এটি নতুন হিসাবে সহায়ক হবে।

সম্পূর্ণ ডেটা সেট সহ আমরা কী অর্জন করতে চাই তার একটি দ্রুত অ্যানিমেশন এখানে দেওয়া হয়েছে: টাইলসভার 750 মিলিয়ন ডেটা আইটেমের ভিজ্যুয়ালাইজেশন পরিবেশন করছে।

এই জিআইএফ (আমার পোস্টগ্রিস ট্রায়াল থেকে) (6x3) প্রি-কম্পিউটেড রাস্টার টাইলগুলি পরিবেশন করছে, যার প্রতিটিতে 200,000 ডলার পয়েন্ট রয়েছে এবং প্রতিটি উত্পন্ন করতে 17 ডলার নিচ্ছে। একটি বিন্দুতে ক্লিক করে গ্রাফটি <1s এর নিকটতম স্থানে সমস্ত .তিহাসিক মান টেনে তৈরি করা হয়।

দীর্ঘ পোস্টের জন্য দুঃখিত, সমস্ত মন্তব্য / পরামর্শ স্বাগত।

উত্তর:


4

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

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

পৃথক স্কোয়ারে বিভিন্ন ধরণের ডেটা থাকবে। আপনি তাদের জন্য বিভিন্ন আকারের মেশিন ব্যবহার করতে পারেন (যেহেতু এটি মেঘ), বা আপনি একই মেশিনে একাধিক ছোট ছোট শারড রেখেছেন।

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

এগুলি সর্বোপরি একটি সহজ শারডিং কেস কারণ ক্যোয়ারী প্যাটার্নটি ভালভাবে শারডিং স্কিমের সাথে ফিট করে।

আসলে, আমি ভাবছি যদি এর জন্য আপনার কোনও ডেটাবেস দরকার হয়। হতে পারে আপনি বিশ্বকে 1000x1000 টাইল বা তার চেয়ে ছোট আকারে বিভক্ত করতে পারেন এবং প্রতিটি টাইলের জন্য ব্লব স্টোরেজে একটি সমতল ফাইল রাখতে পারেন। ব্লব স্টোরেজটি 1 এম ব্লবকে মোটেই আপত্তি করে না।

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


অঞ্চল অনুসারে প্রশস্ততা হ'ল আমি মঙ্গোডিবি-র সাথে নজর রেখেছি এবং মঙ্গোডিবি আটলাসকে সময়মতো প্রকাশের সাথে সাথে আমি বর্তমানে সেই দিকে ঝুঁকছি (প্রাক-গণিত সমষ্টিগত মান ব্যবহার করে)। এই মুহুর্তে আমি নিশ্চিত না আমার কতগুলি প্রতিলিপি / শার্ড সার্ভারের প্রয়োজন হবে, তাই ব্যয়বহুল একটি সমস্যা হয়ে উঠতে পারে। আপনার বিএলএব স্টোরেজ ব্যবহারের প্রস্তাবটিও আকর্ষণীয় এবং আপনি এটির দ্বিতীয় ব্যক্তি prop তবে, বিএলএলবিএস ব্যবহার করা আমার কাছে সম্পূর্ণ নতুন, সুতরাং আপনার আরও দরকারী উত্সগুলি সম্পর্কে আমার আরও এটি পড়তে হবে? উত্তরের জন্য ধন্যবাদ.
আজোক

ব্লবগুলি ব্যবহারের জন্য তুচ্ছ। জটিলতা আপনার থেকে সিরিয়ালাইজেশন, ক্যোয়ারী, লেনদেন, ব্যাকআপ, এইচএ, ডিএ এর মতো ডেটাবেস বৈশিষ্ট্যগুলি প্রয়োগ করতে হবে from এটি সবই করণীয় তবে বুদ্ধিমানের মতো নয়। হতে পারে আপনি ব্লগগুলি পোস্টগ্রিসের টেবিলে সংরক্ষণ করতে পারেন। এটি সিরিয়ালাইজেশন এবং ক্যোয়ারী ব্যতীত সমস্ত কিছু স্বয়ংক্রিয় করে তোলে। ব্লাফ স্টোরেজের চেয়ে পারফ ভাল হতে পারে এবং এটি আরও সস্তাও হতে পারে। ব্লবস এবং ভিএমগুলি ব্যয় দিয়ে চার্জ করা হয় না, তাদের দুর্দান্ত মার্জিন রয়েছে (প্রমাণ: আমার স্থানীয় ওয়েবহোস্টার মেঘের তুলনায় একই গণনা পাওয়ারের জন্য 3-5x কম চার্জ করে This এটি উচ্চ মেঘের মার্জিনকে বোঝায়)।
usr ডিরেক্টরির

দ্রষ্টব্য, আপনি একই মঙ্গো উদাহরণে একাধিক শারড চালাতে পারেন। আপনি "ওভারশার্ড" করতে পারেন। এইভাবে আপনি সার্ভারগুলিকে ভারসাম্য বজায় রাখতে পারেন।
usr ডিরেক্টরির

1
আমি নিশ্চিত না যে আপনার কোনও স্থানিক বৈশিষ্ট্য প্রয়োজন। আপনি অ্যাপ্লিকেশন মধ্যে এটি সমস্ত গণনা করতে পারেন। আপনার একটি আয়তক্ষেত্রের জন্য সমস্ত ডেটা জিজ্ঞাসা করার দক্ষতা প্রয়োজন। এটি বিশ্বকে গ্রিডে ভাগ করে (বা একাধিক রেজোলিউশন গ্রিড) ম্যানুয়ালি করা যেতে পারে। আপনার ডিবিতে স্থানিক সমর্থন করার দরকার নেই বলে আমি মনে করি।
usr ডিরেক্টরির

8

আপনার পড়া প্রশ্নাগুলি কতটা আপ-ডেট হওয়া দরকার?

মানচিত্রটি সর্বাধিক সাম্প্রতিক পরিমাপটি দেখানোর প্রয়োজন হলে আপনি সময় মতো ডাটাবেসকে বিভাজন করতে পারেন। এটি মানচিত্রের জন্য আপনার ক্যোয়ারী লোড হ্রাস করবে।

প্রদত্ত পয়েন্টের ইতিহাসের জন্য, আপনি x এবং y দ্বারা ইতিহাস দেখিয়ে একটি দ্বিতীয় স্টোর ধরে রাখতে পারেন। Aতিহাসিক ডেটা পরিবর্তন হবে না বলে এটি একটি রাত্রে রিফ্রেশ / আপডেট দিয়ে করা যেতে পারে।

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

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

ঠিক আছে, তাই আপনার পয়েন্টগুলি সময়ের সাথে গড় গণনা করা দরকার। এই গণনার মাধ্যমে আমি অনুমান করি যে আপনার প্রকৃত ক্যোয়ারীগুলি 22 ট্রিলিয়ন আইটেমের থেকে অনেক নিচে নেমে এসেছে কারণ রাস্টার মানগুলি অনুসন্ধানের জন্য প্রাক-গণনা করা যেতে পারে।


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

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

যদি আপনি গণনা করা গড় মানগুলি অনুসন্ধান করে থাকেন তবে আপনি কতগুলি পৃথক অবস্থানের নমুনা নিচ্ছেন - অর্থাৎ জুমের সর্বোচ্চ স্তরের প্রকৃত বিটম্যাপটির রেজোলিউশন কী?
কনসার্নড

আমি সম্মত হয়েছি যে প্রাক-গণনা করা সমষ্টিগুলি খুব সম্ভবত যাওয়ার পথে দেখছে। সর্বোচ্চ জুমে গণনা করা গড়গুলি কোনও অঞ্চলের গড় গড়ে হয় না, এটি 1 স্থানে সময়ের সাথে মানগুলির গড়। এটি যখন জুম আউট হবে কেবলমাত্র আমার কাছে পৃথক সারণী / সংগ্রহ থাকবে যেগুলি সম্পর্কে নিশ্চিত করার জন্য অঞ্চলগুলি হবে যে কোনও কোয়েরি / টাইলের মধ্যে এর মধ্যে অনেকগুলি অবস্থানের পয়েন্ট নেই (সর্বাধিক 50,000-200,000)। যে কোনও টাইলের সর্বাধিক রেজোলিউশন 256x256 পিক্সেল।
আজোক

3

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

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

জিআইএস একটি সময় সিরিজের ডাটাবেসে পাস করা পয়েন্টগুলির একটি সেট ফেরত দেবে। এটি মাপা মানগুলি ধরে রাখে এবং সমষ্টিগুলি সম্পাদন করে। কেডিবি হ'ল আমি সচেতন। এটি সিকিউরিটি ট্রেডিংকে লক্ষ্যবস্তু করে, এতে আপনার দৃশ্যের তুলনায় কয়েকটি কী বা বেশি ডেটা পয়েন্ট থাকবে।

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

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

where latitude between x1 and x2
and logitude between y1 and y2

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

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


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