পটভূমি
একটি স্থানীয় ডাটাবেসে প্রায় 1.3 বিলিয়ন স্বতন্ত্র সারি রয়েছে। প্রতিটি সারি অপ্রত্যক্ষভাবে একটি নির্দিষ্ট অক্ষাংশ এবং দ্রাঘিমাংশ (অবস্থান) এর সাথে যুক্ত। প্রতিটি সারিতে একটি তারিখ স্ট্যাম্প থাকে।
ব্যবহারের ক্ষেত্রে
নিম্নরূপ সমস্যা হয়:
- ব্যবহারকারী একটি শুরুর / শেষের তারিখ এবং মানগুলির একটি ব্যাপ্তি সেট করে (যেমন, 100 থেকে 105))
- সিস্টেমটি সমস্ত সারি সংগ্রহ করে যা প্রদত্ত তারিখটির সাথে মিলিত হয়, অবস্থান অনুসারে গ্রুপ করা হয়েছে।
- সিস্টেমগুলি সেই তারিখগুলির মধ্যে অবস্থানগুলির নির্ধারণ করে যে মানগুলির প্রদত্ত পরিসরে পড়ে যাওয়ার একটি পরিসংখ্যানগত সম্ভাবনা রয়েছে।
- সিস্টেমটি সমস্ত মিলে যাওয়া অবস্থান ব্যবহারকারীকে প্রদর্শন করে lays
এটি গতি এবং স্কেলের সমস্যা।
প্রশ্ন
আপনি কল্পনা করতে পারেন এমন সর্বনিম্ন ব্যয়বহুল সমাধান আর্কিটেকচারটি কী যা এই জাতীয় ব্যবস্থাকে পাঁচ সেকেন্ডের মধ্যে ব্যবহারকারীদের জন্য ফলাফল পুনরুদ্ধার করতে দেয়?
বর্তমান ব্যবস্থা
পরিবেশটি বর্তমানে:
- PostgreSQL 8.4 (আপগ্রেড করা সম্ভব; ডাটাবেস স্যুইচ করা কোনও বিকল্প নয়)
- আর এবং পিএল / আর
- XFS দ্বারা
- WD VelociRaptor
- 8 জিবি র্যাম (কর্সার জি.স্কিল; 1.3 গিগাহার্টজ)
- কোয়াড কোর জেনুইনইন্টেল 7 (2.8 গিগাহার্টজ)
- উবুন্টু 10.10
হার্ডওয়্যার আপগ্রেড গ্রহণযোগ্য।
আপডেট - ডাটাবেস স্ট্রাকচার
কোটি কোটি সারি সাদৃশ্য একটি সারণীতে রয়েছে:
id | taken | location_id | category | value1 | value2 | value3
- আইডি - প্রাথমিক কী
- নেওয়া - সারিতে নির্ধারিত তারিখ
- অবস্থান_আইডি - অক্ষাংশ / দ্রাঘিমাংশের উল্লেখ ference
- বিভাগ - তথ্য বিবরণ
- মান 1 .. 3 - অন্যান্য মানগুলি যা ব্যবহারকারী জিজ্ঞাসা করতে পারে
takenকলাম সাধারণত প্রতি পরপর তারিখ হয় location_id, কখনও কখনও প্রতিটি অবস্থানের 1800 থেকে 2010 তথ্য আছে (যেমন প্রতিটি অবস্থানে একই তারিখ সীমার মধ্যে ডেটা আছে 77,000 সম্পর্কে তারিখ, তাদের অনেকেই সদৃশ)।
এখানে সাতটি বিভাগ রয়েছে এবং টেবিলগুলি ইতিমধ্যে বিভাগ দ্বারা বিভাগ করা হয়েছে (চাইল্ড টেবিলগুলি ব্যবহার করে)। প্রতিটি বিভাগে ~ 190 মিলিয়ন সারি রয়েছে। অদূর ভবিষ্যতে, বিভাগ অনুসারে সারিগুলির সংখ্যা এক বিলিয়ন ছাড়িয়ে যাবে।
প্রায় 20,000 অবস্থান এবং 70,000 শহর রয়েছে। অক্ষাংশ এবং দ্রাঘিমাংশ দ্বারা অবস্থানগুলি শহর সম্পর্কিত হয় corre প্রতিটি লোকেশন একটি নির্দিষ্ট শহরে অর্পণ করার অর্থ শহরের গণ্ডি সন্ধান করা, যা তুচ্ছ কাজ নয়।
ধারনা
আমার কিছু ধারণাগুলি অন্তর্ভুক্ত রয়েছে:
- ডাটাবেস হোস্ট করার জন্য একটি মেঘ পরিষেবা সন্ধান করুন।
- একটি এসএসডি রাইড স্ট্রিপ তৈরি করুন (দুর্দান্ত ভিডিও)।
- একটি টেবিল তৈরি করুন যা শহর অনুসারে সমস্ত অবস্থানকে একত্রিত করে (প্রাক-গণনা)।
ধন্যবাদ!
location_idএকটি geographyবা geometry, অথবা একটি দ্বিতীয় টেবিল বোঝায়? location_idকলামটি কি সূচিত হয়?