একটি পোস্টগ্রিজ ডাটাবেস থেকে অন্য টেবিলের প্রতিলিপি করা


9

আমি নিম্নলিখিত পরিস্থিতি পেয়েছি: আমার কাছে পোস্টগ্র্যাস্কিল ডাটাবেস চালানো তিনটি মেশিন রয়েছে। একটি মেশিন ক্লায়েন্ট অ্যাকাউন্টের তথ্য ধারণ করে (এই মেশিন সি কল করুন), অন্য দুটি মেশিন ক্লায়েন্ট লগিংয়ের তথ্য ধারণ করে (এই এল 1 এবং এল 2 কল করুন)। বিভক্ত হওয়ার কারণটি হ'ল একাধিক মেশিনের উপর পৃথক লোডিং (তাই কিছু ক্লায়েন্ট লগিংয়ের তথ্য এল 1, কিছুকে এল 2 তে পাঠায় ... এবং সম্ভবত কিছু সময় এল 3, এল 4, ...)।

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

আমার চিন্তাভাবনাটি হ'ল প্রতিটি এল 1, এল 2, এর উপর সি টেবিলগুলি প্রতিলিপি করা ... যাতে আমি যোগদান করতে পারি। সি থেকে প্রাপ্ত টেবিলগুলির হিসাবে, সি মাস্টার এবং এল 1, এল 2, ... দাস are তবে এল 1, এল 2 এর অন্যান্য টেবিলগুলির জন্য ... এই মেশিনগুলি মাস্টার ters এটি হুবহু মাস্টার-মাস্টার প্রতিলিপি নয় এবং এটি হুবহু মাস্টার-স্লেভ নয়।

পোস্টগ্রিজ করতে পারে (আমি 9.1 চালিয়ে যাচ্ছি) প্রতিলিপিটি এটি করতে রাজি করা যেতে পারে, বা অন্য কোনও প্যাকেজ নেই যা কাজটি করে। শেষ অবলম্বনে, আমি পর্যায়ক্রমে টেবিলগুলি সিঙ্ক করার জন্য কিছু কোড লিখতে পারি (আমি কিছুটা বিলম্ব সহ্য করতে পারি), তবে এটি না দিয়ে ভাল লাগবে!

আগাম ধন্যবাদ.


1
সি অ্যাক্সেস করতে লগিং মেশিনে FDW ব্যবহার করতে পারেন? যদিও, এটি সিতে একটি পারফরম্যান্স হিট করতে পারে ম্যাটেরিয়ালাইজড ভিউগুলি পারফরম্যান্স হিটকে হ্রাস করতে পারে, তবে আমি কীভাবে পোস্টগ্র্রেএসকিউএল বিদেশী টেবিলের আপডেটগুলি সনাক্ত করে তা নিশ্চিত নই। যদি এটি স্বয়ংক্রিয়ভাবে হয় (যা ম্যাটেরিয়ালাইজড ভিউ ডকুমেন্টেশনের সমাপ্তিটি বলে মনে হয়), এটি আপনার সমস্যার সম্পূর্ণ সমাধান করতে পারে। যদিও এটি 9.3 বৈশিষ্ট্যযুক্ত। খুব সক্রিয় মেইলিং লিস্টটিও সহায়ক হতে পারে।
jpmc26

উত্তর:


4

PostgreSQL 9.3 এ, আপনি postgres_fdwঅন্য মেশিনে স্বচ্ছভাবে বিদেশী টেবিলটি অনুসন্ধান করতে ব্যবহার করতে পারেন ।

পুরানো সংস্করণে, dblinkঅ্যান্ড্রু দ্বারা উল্লিখিত হিসাবে একটি বিকল্প হতে পারে।

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

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


3

এটি অর্জনের জন্য আপনার dblinks এবং উপাদানযুক্ত দৃষ্টিভঙ্গি ব্যবহার করা উচিত। দুটি বৈশিষ্ট্যই পোস্টগ্রিসের সর্বশেষতম সংস্করণগুলিতে অন্তর্নির্মিত:

http://www.postgresql.org/docs/9.3/static/rules-materializedviews.html

http://www.postgresql.org/docs/9.3/static/dblink.html

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

আপনার যদি অতিরিক্ত কার্যকারিতা প্রয়োজন হয় তবে স্ন্যাপশট প্রকল্প দ্রুত রিফ্রেশ এবং স্ন্যাপশট লগগুলির মতো উন্নত বৈশিষ্ট্যগুলি সরবরাহ করে:

http://pgfoundry.org/projects/snapshot/

এটির সাহায্যে আপনি কেবল রিফ্রেশগুলি সারিগুলি আপডেট করতে পারবেন যা আপডেটের প্রয়োজন, যা এটিকে আপনার অ্যাপ্লিকেশনে ব্যাঘাতকে হ্রাস করে বৃহত, অস্বস্তিকর ডেটাসেটগুলির জন্য অত্যন্ত দ্রুততর করে তুলতে পারে। ডিফল্টরূপে ভিউগুলি সম্পূর্ণভাবে ফেলে দেওয়া হয় এবং পোস্টগ্রিসে পুনরায় তৈরি করা হয়, যা সুস্পষ্ট কারণে কার্য সম্পাদনের জন্য খুব খারাপ হতে পারে।

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