বিভিন্ন প্রজেকশন সহ পোস্টজিআইএস রাস্টার ডেটা কীভাবে পরিচালনা করব?


10

আমার প্রত্নতাত্ত্বিক জিওফিজিক্স ডেটা সংরক্ষণ এবং পরিচালনা করতে হবে যা নমুনার আয়তক্ষেত্রাকার অ্যারে হিসাবে সংগ্রহ করা হয় - একটি রাস্টার চিত্র image

  • প্রতিটি রাস্টার সাধারণত 20x20 বা 30x30 ভাসমান-পয়েন্ট নমুনাগুলি সাধারণত 1 মিটার বিরতিতে নমুনাযুক্ত হয়।
  • একটি জরিপে প্রদত্ত স্থানে এই চিত্রগুলির এক বা একাধিকটি থাকবে।
  • এটা সম্ভব যে বিভিন্ন দেশে, বা যে অঞ্চলগুলি বিভিন্ন প্রক্ষেপণ ব্যবহার করে, সেখানে দুটি পৃথক জরিপ চালানো যেতে পারে তবে প্রতিটি সমীক্ষায় এক এবং একমাত্র প্রক্ষেপণ ব্যবহার করা হবে।
  • এগুলি কখনই একসাথে দেখার সম্ভাবনা থাকে না, প্রতিটি সমীক্ষা সাধারণত নিজেই বসে থাকে।
  • ডেটা কেবলমাত্র একটি কাস্টম ফ্রন্ট-এন্ড দ্বারা অ্যাক্সেস করা হবে, সুতরাং কোনও ব্যবহারকারী এটির মাধ্যমে psqlবা এর মতো সরাসরি নিয়ন্ত্রণ পাবে না ।
  • প্রতিটি নমুনা যেমন সংগ্রহ করা হয়েছিল তেমন সংরক্ষণ করা দরকার, তাই আমি এটি ওয়েব মারকেটরের মতো কোনও সাধারণ সিআরএসে পুনরায় প্রজেক্ট করতে পারি না কারণ একটি নমুনা মূল প্রজেকশনটির চেয়ে কম বা কম অঞ্চল কভার করতে পারে এবং বিশ্লেষণ সম্পাদন করা প্রয়োজন তথ্য উপর।

পোস্টজিআইএস রাস্টার ডাটাবেসে আমার কীভাবে ডেটা সবচেয়ে ভাল সঞ্চয় করা উচিত? আমি যে বিকল্পগুলি নিয়ে এসেছি সেগুলি হ'ল:

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

1 এবং 2 পোস্টজিআইএস-এর কয়েকটি দুর্দান্ত স্বয়ংক্রিয় অংশ ভাঙে, তবে অন্যথায় সামনের-শেষের কোডটিতে লুকানো থাকবে। তবে অনুসন্ধানগুলি সম্ভবত কিছুটা বেশি সময় নেবে।

3 এবং 4 টেবিলগুলির বিস্ফোরণের সাথে শেষ হতে পারে যা এফকে সীমাবদ্ধতাগুলি পরিচালনা করতে আরও শক্ত করে তোলে।

ব্যবহারিকভাবে, জরিপ অনুসারে রেস্টারদের সংখ্যা 1 থেকে 100 বা তারও বেশি এবং জরিপের সংখ্যা কয়েকশ'র মধ্যে চলে যাওয়ার সম্ভাবনা রয়েছে। তবে স্বতন্ত্র প্রজেকশনগুলির সংখ্যা খুব কম থাকার সম্ভাবনা রয়েছে যা 3 টির পক্ষে রয়েছে।

উত্তর:


7

আমি আপনার প্রশ্নকে একটি চিন্তাভাবনা দিয়েছি এবং শেষ পর্যন্ত এই সিদ্ধান্তে পৌঁছেছি যে আমি প্রতিটি জরিপকে তার নিজস্ব ডাটাবেসে সংরক্ষণ করব

দ্রষ্টব্য : ডেটাবেস বলতে আমার বোঝানো হয়েছে এখানে দেওয়া পোস্টগ্রিজ টার্মিনোলজি অনুসারে একটি একক পোস্টগ্রিজ ডাটাবেস ক্লাস্টারের অভ্যন্তরে তৈরি একটি ডাটাবেস , এটির নিজস্ব ব্যবহারকারী, টেমপ্লেট 1 ইত্যাদির সাথে সম্পূর্ণ পৃথক পোস্টগ্র্যাস প্রক্রিয়া নয়।

যদিও এটি এটিকে অতিরিক্ত ওজনের বলে মনে হচ্ছে, বাস্তবে, এটি বেশ কয়েকটি সুবিধা দেয়:

  • পরিচালনযোগ্যতা: প্রতিটি সমীক্ষার সাথে তার সিডের সাথে কেবল একটি রাস্টার টেবিল রয়েছে যা আপনাকে ডেটা পরিচালনার পোস্টগ্রিস মানগুলিতে যথাসম্ভব মেনে চলতে দেয় (যেমন: রাস্টার_ক্লামস টেবিল বা এফকে বা সীমাবদ্ধতার সাথে কোনও গোলমাল নয় All সমস্ত পোস্টজি ফাংশন এখনও প্রত্যাশা অনুযায়ী কাজ করে)

  • সরলতা: যতক্ষণ আপনি একটি সুসংবদ্ধ নামকরণ কৌশল অবলম্বন ও প্রয়োগ করেন যতক্ষণ না: প্রতিটি ডিবিকে srvy_ নাম হিসাবে কল করুন এবং তারপরে সমস্ত রাস্টার টেবিল এবং কলামগুলির জন্য একই নামটি (অর্থাত্ জরিপডেটা ) পুনরায় ব্যবহার করুন । আপনি যদি এত আগ্রহী হন (আমি জানি; আমি ;-)) আপনি প্রতিটি ডাটাবেসে একটি মেটাডেটা টেবিল যুক্ত করতে পারেন যাতে বর্ণিত হয় যে সেই ডেটাবেজে কোনও ধরণের ডেটা সংরক্ষণ করা হয়েছে, যখন এটি শেষবার আপডেট হয়েছিল এবং ততক্ষণ। এই জাতীয় সুসংগত নামকরণ সহ একটি ডাটাবেস কাঠামো স্ক্রিপ্ট / জিজ্ঞাসা করা সহজ (এবং আনন্দদায়ক) হবে।

  • এটি আপনার প্রয়োজনীয়তা অনুসারে কাজ করে, যতক্ষণ না প্রতিটি সমীক্ষা তার নিজস্ব গ্রিড ব্যবহার করে

  • স্কেলিবিলিটি: এটি স্কেল করে কারণ আপনি ডাটাবেসগুলি (বিভিন্ন টেবিল স্পেসগুলিতে বরাদ্দ করে ) বিভিন্ন স্পিন্ডলে (বা স্ট্রোক বিক্রেতার উপর নির্ভর করে পুল, লুন) সরিয়ে নিতে পারেন যাতে I / O সমান্তরাল হয়। একই ডাটাবেস থেকে বিভিন্ন ডিস্কে সারণী সরিয়ে নেওয়া আরও অনেক কঠিন হবে

  • সুরক্ষা: আপনি ডাটাবেস সুরক্ষা (অ্যাপ্লিকেশন উপরে অতিরিক্ত স্তর হিসাবে) ব্যবহার করে বিভিন্ন সমীক্ষায় বিভিন্ন অনুমতি প্রদান করতে পারেন

  • পরীক্ষিত: একটি একক উদাহরণস্বরূপ উপর ডাটাবেস হাজার হাজার হ্যান্ডলিং postgres এর সেখানে ছিলাম রিপোর্ট, দেখুন এই একটি রেফারেন্স জন্য

  • [এটি পরীক্ষা করে দেখতে হবে, আমি জানি এটি জ্যামিতির জন্য কাজ করে, রেস্টারদের জন্য জানে না] আপনি এখনও নীচের মতো মতামত তৈরি করে একবারে সমস্ত রেস্টারদের জিজ্ঞাসা করতে (এবং রূপান্তর করতে পারেন):

create or replace view v_all_surveys_as_wgs84 as select ST_Transform(raster, 4326) as raster_wgs84 from srvy_number1.rasterdata union all select ST_Transform(raster, 4326) as raster_wgs84 from srvy_number2.rasterdata [...]

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


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

ধন্যবাদ! আমি ডেটাবেস = স্কিমা না ডাটাবেস = উদাহরণ। শর্তগুলি কিছুটা দ্ব্যর্থহীন, আমি আমার উত্তরটি পরিষ্কার করব।
unicoletti

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