ভূ-স্থান সংক্রান্ত ডেটার জন্য কী-মান স্টোরটি ব্যবহার করার কোনও উপায় আছে কি?


26

আমি অতীতে অনেকগুলি সম্পর্কিত ডেটাবেস ব্যবহার করেছি, তবে আমি সমস্ত নোএসকিউএল ডেটাবেস সম্পর্কেও পড়েছি এবং কী-ভ্যালু স্টোরগুলিকে হস্তক্ষেপ দেখায়।

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

নির্দিষ্ট জায়গায় (মানচিত্রের আয়তক্ষেত্র) অবজেক্টগুলি অনুসন্ধান করার জন্য আমার এক্স এবং ওয়াই মানগুলি প্রয়োজন এবং আমি যদি একটি নির্দিষ্ট বস্তু আপডেট করতে চাই তবে আইডি মানটি দরকার।

এর জন্য কী-ভ্যালু স্টোরটি ব্যবহার করতে পারি এমন কোনও উপায় আছে?

উত্তর:


18

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

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

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

পেশাদাররা - বেশ দ্রুত, কার্যকর করা সহজ, কোনও মেমরির পদচিহ্ন নয়।

কনস - প্রিপ্রসেসিংয়ের প্রয়োজন, ব্যবহারকারীকে গ্রিডের আকার নির্ধারণ করতে হবে, বেশ কয়েকটি গ্রিডে বৃহত রত্নগুলি ভাগ করা হয়, ক্লাস্টারিংয়ের ফলে গ্রিডগুলি অতিরিক্ত বোঝা হয়ে উঠতে পারে, সিরিয়ালাইজেশন / ডিসিরিয়ালাইজেশন ব্যয় একটি সমস্যা হতে পারে (এমনকি প্রোটোকল বাফারের মাধ্যমে সংকুচিত হয়েও)

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

পললাইন কোয়াডকেজস http://www.arc2earth.com/images/help/GAE_QKS_1.png বহুভুজ কোয়াডকিস http://www.arc2earth.com/images/help/GAE_QKS_2.png

উপরে ব্যবহৃত কোয়াডকি নামকরণ কনভেনশনটি সুপরিচিত এবং আরও গুরুত্বপূর্ণভাবে, স্থানীয়ভাবে সংরক্ষণের প্রবণতা রয়েছে ( এখানে আরও বর্ণিত )

উপরের বহুভুজটি দেখতে এর মতো কিছু দেখায়: 0320101013123 03201010131212 03201010131213 0320101013132 0320101013133 03201010131302 03201010131303 032010101313002 0320101013133 032010101313012 032010101313013 03201010131333020

যদি ক্যোয়ারির সীমাগুলি যথেষ্ট ছোট হয় তবে আপনি সরাসরি কিউকে দিয়ে আনতে পারেন। এটি GAE ডাটাটোরে কেবলমাত্র একক, ব্যাচের আরপিসি কল করার পরে এটি সর্বোত্তম। সীমানা যদি এত বড় হয় যে এটিতে খুব বেশি সম্ভাব্য qks (> 1000) অন্তর্ভুক্ত থাকে তবে আপনি বিকল্পভাবে একটি ফিল্টার ব্যবহার করে জিজ্ঞাসা করতে পারবেন (উদা: qk> = 0320101013 এবং qk <= 0320101013 + ff ufffd)। কোয়াডকি নামকরণ কনভেনশন প্লাস, জিএই সূচকগুলির স্ট্রিংয়ের উপরে উপরে থাকা ক্যোয়ারিতে কেবলমাত্র বিদ্যমান গ্রিডগুলি পাওয়া যায় যা সেই কিউকে মানের নীচে চলে যায়।

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

উদাহরণ - মার্কিন কাউন্টারে কোয়েরি: জিওজসন

পেশাদাররা - বেশ দ্রুত, গ্রিডের আকারের কোনও কনফিগারেশন নেই, মেমরির পদক্ষেপ নেই, ভিড় নেই ded

কনস - প্রিপ্রোসেসিং প্রয়োজন, কিছু পরিস্থিতিতে সম্ভাব্য ওভারফ্যাচ, কোনও মেরু ডেটা নেই

স্পেস ফিলিং কার্ভস - এই বছর গুগল I / O এ আলফ্রেডের নেক্সটজেন ক্যোয়ারীস টকটি দেখুন । নতুন মাল্টিকুয়েরি অপারেটরগুলির সাথে জেনেরিক স্পেস / টাইম ফিলিং কার্ভগুলি অন্তর্ভুক্ত করা (সমান্তরালভাবে চালানো) কিছু সত্যই শীতল স্থানীয় প্রশ্নের জন্য মঞ্জুরি দেয়। এটি কি চিরাচরিত এসকিউএল পারফরম্যান্সকে পরাজিত করবে? বলা শক্ত তবে এটি খুব ভাল স্কেল করা উচিত। এবং আমরা দ্রুত ভবিষ্যতের কাছে পৌঁছে যাচ্ছি সবসময় / সমস্ত আকারের মোবাইল ডিভাইসগুলি নাটকীয়ভাবে আপনার সাইট / পরিষেবায় ট্র্যাফিককে বাড়িয়ে তুলবে।

অবশেষে, আমি এটিও সম্মত করব যে এসকিউএল এর উপর নোএসকিউএল চয়ন করার আগে আপনার সমস্যার ডোমেনটি খুব ঘনিষ্ঠভাবে দেখা উচিত। আমাদের ক্ষেত্রে, আমি সত্যিই GAE এর দামের মডেলটি পছন্দ করেছি তাই সত্যই কোনও পছন্দ ছিল না তবে আপনার যদি স্কেল করার প্রয়োজন না হয় তবে নিজেকে কিছুটা সময় সাশ্রয় করুন এবং কেবল একটি স্ট্যান্ডার্ড স্কয়ার ডিবি ব্যবহার করুন


আপনি জিএই উল্লেখ করেছেন তবে আপনি কোন ডাটাবেস ব্যবহার করছেন? এখানে বেশ কয়েকটি রয়েছে: ক্লাউড জিওএল.কম
ডন

11

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


হ্যাঁ, তারা উভয়েই করে, এবং সিম্পলজিও ক্যাসান্দ্রার কাছে একটি স্থানিক এক্সটেনশন তৈরি করছে। আমি ভলডেমর্ট বা মেমক্যাসে কিছু শুনিনি
TheSteve0

ওহ, আমি সিম্পিজিও যা করছে তা আমি পছন্দ করি। আমি alousর্ষা করছি এবং তাদের পক্ষে কাজ করতে পছন্দ করব!
JoshFinnie

8

এটি মূলত অ্যালগরিদম সম্পর্কে একটি প্রশ্ন। স্ট্যাক ওভারফ্লো এটি জিজ্ঞাসা করার জন্য ভাল জায়গাও হতে পারে।

যাই হোক না কেন, আপনার প্রত্যক্ষ প্রশ্নের উত্তর হ্যাঁ, আপনি স্থানিক ডেটা উপস্থাপন করতে কেভিপি স্টোর ব্যবহার করতে পারেন। একটি ভাল প্রশ্ন, তবে "স্থানীয় স্থান উপাত্ত উপস্থাপনের জন্য আমি কেভিপি স্টোর ব্যবহার করা উচিত?"

এই প্রশ্নের উত্তর (অন্য অনেকের মতো), "এটি নির্ভর করে"। এটি আপনার স্কেল, আপনার (লেনদেনের) কাজের বোঝা, উপাত্তের প্রকৃতি এবং আপনার হাতে থাকা গণনার কাঠামোর উপর নির্ভর করে।

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

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

আপডেট :

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

  ***********
  ***********
  ***********
  ***********
  ****###****
  ****###****
  ****###****
  ***********
  ***********
  ***********
  ***********

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

এটি ধীর। একটি বড় গ্রিডে এটি একই ঘনত্বের সাথে কল্পনা করুন, 100 কে * 100 কে বলুন There সেখানে আপনাকে কেবল 9 টি রেকর্ড সন্ধান করতে "300, 000" সূচী এন্ট্রি স্ক্যান করতে হবে। তবে আপনি যদি সঠিকভাবে ভারসাম্য আর-ট্রি ব্যবহার করেন তবে সূচী অনুসন্ধানের জন্য সম্ভবত প্রায় 90 টি রেকর্ড স্ক্যান করতে হবে। এটি একটি বিশাল পার্থক্য।

তবে সমস্যাটি হ'ল একটি আর-ট্রি সুষম রাখা ব্যয়বহুল। এই কারণেই উত্তরটি "এটি নির্ভর করে", এবং "আমি এটি কীভাবে করব" এর চেয়ে "কেন আমাকে এটি করা উচিত" প্রশ্নটি আরও গুরুত্বপূর্ণ।

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


"হ্যাঁ, আপনি পারেন" এর মতো কোনও উত্তর আমি গ্রহণ করব না। কারণ আমি জানতে চাই কেমন । এবং "আমি কি করবো .." এর চেয়ে ভাল প্রশ্ন নয়, কারণ আপনি যেমন বলেছিলেন "এটি নির্ভর করে"।
জোনাস

1
তোমার সাথে আমার একমত হতে হবে না আপনি যদি একটি দরকারী সিস্টেম বানাতে চান, বা অনুরূপ সিস্টেম তৈরির লোকের জন্য ইন্টারনেটে একটি দরকারী রেফারেন্স রেখে যান, তবে "আমি কী" "কীভাবে" তার চেয়ে অনেক বেশি গুরুত্বপূর্ণ। সহায়ক হওয়ার স্বার্থে, তবে কীভাবে কিছু তথ্য দেওয়ার জন্য আমি আমার উত্তরটি সম্পাদনা করেছি।
স্কট উইসনিউইস্কি

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

নোএসকিউএল একটি সমস্যা সমাধান করে, তবে এটি এমন সমস্যা যা কার্যত কারও কাছেই নেই কারণ তারা পর্যাপ্ত পরিমাণে কাজ করছেন না। দুর্ভাগ্যক্রমে এটা ভাবতে সর্বদা সুন্দর যে আমাদের নিজস্ব সিস্টেমগুলি বাস্তবে যা আছে তার চেয়ে বড় গ্র্যান্ড স্কিমে আরও বড়। :)
জেমস রায়ান

4

আপনি যদি ল্যাট / লম্বা মানগুলি ব্যবহার করছেন তবে আপনি আপনার স্টোরের মান অংশ হিসাবে জিওহ্যাশগুলি ব্যবহার করতে সক্ষম হতে পারেন ।

এনওয়াইসির জন্য এখানে একটি। dr5regy6rc6ye

জিওহ্যাশের সাথে, আপনি বিবিধ নির্ভুলতার গ্রিড পেতে জিওহশের শেষে অক্ষরগুলি ছুঁড়ে ফেলা শুরু করতে পারেন: http://geohash.org/dr5re

উদাহরণস্বরূপ জেএস বাস্তবায়ন: http://github.com/davetroy/geohash-js


1

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

আমার পরামর্শটি কীভাবে ব্যবহার করতে হবে তা বিবেচনা করার আগে আপনার স্কেলটি আসলে নোএসকিউএল প্রয়োজন কিনা তা নিবিড়ভাবে মূল্যায়ন করা হবে।


1
জ্যামিতির ভিতরে বা বাহিরের কোনও বিন্দু যদি আপনাকে গণনা করতে হয় তবে এখানে আপনার সমস্যার (এবং এর সমাধান) একটি উদাহরণ রয়েছে। কোড.google.com/p/giscloud/wiki/SerializedSpatialIndexes
জন

আরে @ জন, উত্তর হিসাবে এটি আরও ভাল যোগ করা হবে। এইভাবে এটি নিজেরাই দাঁড়াতে পারে এবং লোকেরা যদি মনে করে যে এটির যোগ্যতা আছে তবে আপনি এর জন্য কৃতিত্ব পাবেন!
জেসনবার্চ


1

মঙ্গোডিবিতে নথিগুলির কঠোর 2 ডি [x, y] টিপল বৈশিষ্ট্যের ভিত্তিতে জিওপ্যাটিয়াল সূচকগুলি তৈরি এবং গ্রাস করার সুবিধা রয়েছে এবং এটি 'কাছাকাছি' এবং 'সীমানা' উভয় প্রকারের মঞ্জুরি দেয়। তবে এটি অনুমানগুলির জন্য কোনও সংশোধন পরিচালনা করে না এবং সমতল পৃথিবীর একটি আদর্শ মডেল ব্যবহার করে


0

আমি কী / মান ভান্ডারগুলি কেবল ক্যাচিং স্তর হিসাবে ব্যবহার করতাম, http://www.membase.org/ বা http://wiki.basho.com/display/RIAK/How+Things+Work (riak_kv_cache_backkend) দেখুন

আপনার অ্যাপ্লিকেশন প্রয়োজনীয়তার উপর নির্ভর করে আপনি এখনও ডেটাতে এসকিউএল অ্যাক্সেস পেতে চাইতে পারেন।


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