ডেভ স্ন্যাপশটের জন্য কেবল টেবিলের কিছু অংশের ডাম্প পোস্টগ্র্যাগ করে


97

উত্পাদনে আমাদের ডাটাবেসটি কয়েকশ গিগাবাইট আকারে। বিকাশ এবং পরীক্ষার জন্য, আমাদের এই ডাটাবেসের স্ন্যাপশট তৈরি করতে হবে যা কার্যকরীভাবে সমতুল্য, তবে আকারগুলি কেবল 10 বা 20 জিগ।

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

উদাহরণস্বরূপ, আসুন আমরা বলি যে আমাদের সত্ত্বা রয়েছে যার অনেকগুলি থেকে বহু সম্পর্ক রয়েছে:

  • সংস্থার এন বিভাগ রয়েছে
  • বিভাগে এন কর্মচারী রয়েছে
  • কর্মচারীর এন উপস্থিতির রেকর্ড রয়েছে

সম্ভবত 1000 টি সংস্থা, 2500 বিভাগ, 175000 কর্মচারী এবং কয়েক মিলিয়ন উপস্থিতির রেকর্ড রয়েছে। প্রথম ১০০ টি সংস্থা এবং এর সমস্ত উপাদান বিভাগ, কর্মচারী এবং উপস্থিতি রেকর্ডটি টানতে, বলার জন্য আমরা একটি প্রতিরূপযোগ্য উপায় চাই ।

আমরা বর্তমানে স্কিমাটির জন্য পিজি_ডাম্প ব্যবহার করি এবং তারপরে ছোট টেবিলগুলি থেকে সমস্ত ডেটা বের করার জন্য - ডিজিবল-ট্রিগার এবং --ডাটা-দিয়ে pg_dump চালাই run আমরা ডেটার অংশটি টেনে আনতে কাস্টম স্ক্রিপ্টগুলি লিখতে চাই না কারণ আমাদের দ্রুত বিকাশ চক্র রয়েছে এবং কাস্টম স্ক্রিপ্টগুলি ভঙ্গুর হবে এবং সম্ভবত তার মেয়াদ শেষ হওয়ার সম্ভাবনা রয়েছে।

এটা আমরা কিভাবে করতে পারি? এমন কি তৃতীয় পক্ষের সরঞ্জাম রয়েছে যা ডাটাবেস থেকে যৌক্তিক পার্টিশনগুলি টানতে সহায়তা করতে পারে? এই সরঞ্জামগুলি কী বলা হয়?

কোন সাধারণ পরামর্শও প্রশংসা!

উত্তর:


108

আপনার বড় টেবিলগুলিতে আপনি উপগ্রহগুলি বের করতে কপি আদেশটি ব্যবহার করতে পারেন ...

COPY (SELECT * FROM mytable WHERE ...) TO '/tmp/myfile.tsv'

COPY mytable FROM 'myfile.tsv'

https://www.postgresql.org/docs/current/static/sql-copy.html

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


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

4
আপনি যদি স্নাপশটগুলি চান এমন একাধিক যোগদানের টেবিল থাকে তবে এই কাজটি করার কোনও উপায় আছে কি? অনুলিপি একাধিক সারণী আমদানি সমর্থন করে না।
mlissner

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

4
নোট করুন এই পদ্ধতিটি অনুলিপি করা টেবিলগুলিতে ক্রমগুলি আপডেট করে না তাই আরও সন্নিবেশ করানো প্রাথমিক কী সীমাবদ্ধতা লঙ্ঘন করতে পারে।
ব্যবহারকারী2859458

4
এর \copyপরিবর্তে আমাকেও ব্যবহার করতে COPYহয়েছিল, কারণ পরবর্তীটি কেবলমাত্র সুপারইউসার ছিল। ভাগ্যক্রমে 9.1 এ অন্য কোনও পরিবর্তন ছাড়াই বাকি সমস্ত কিছুই নিখুঁতভাবে কাজ করেছিল।
PJSCopeland

8

ইতিমধ্যে এটি করা কোনও সফ্টওয়্যার সম্পর্কে আমি জানি না, তবে আমি 3 টি বিকল্প সমাধানের কথা ভাবতে পারি। দুর্ভাগ্যক্রমে, তাদের সকলের জন্য কিছু কাস্টম কোডিং প্রয়োজন।

  1. একটি পৃথক স্কিমাতে সমস্ত টেবিলগুলি পুনরায় তৈরি করুন, তারপরে সেই টেবিলগুলিতে অনুলিপি করুন যা আপনি ডাম্প করতে চান তা ব্যবহার করে INSERT INTO copy.tablename SELECT * FROM tablename WHERE ...এবং ডাম্প করতে চান।

  2. এসকিউএল স্টেটমেন্ট হিসাবে ডাম্পিং ডেটার জন্য আপনার নিজের স্ক্রিপ্ট লিখুন। আমি এই পদ্ধতির অতীতে ব্যবহার করেছি এবং এটি পিএইচপি এর 20-30 লাইনের মতো কিছু নিয়েছে।

  3. Pg_dump সংশোধন করুন যাতে এটি কোনও একক টেবিল ডাম্প করার সময় -t সুইচ সহ একটি শর্তও গ্রহণ করে।


5

13
যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে।
12 'তে টালমোনিজ

4
এখানে আসলেই তা বোঝা যায় না। ওপি বিশেষত তৃতীয় পক্ষের সরঞ্জামগুলির নাম জিজ্ঞাসা করেছিল যা এটি করে। উত্তরের সারাংশ কেবল তাই, "এই URL এ 'জেলার' নামে একটি তৃতীয় পক্ষের সরঞ্জাম রয়েছে যা এই URL এ করে।" এই লিঙ্কটি সমস্ত প্রয়োজনীয় তথ্য সরবরাহ করে; যোগ করার মতো আর কিছুই নেই। যদি সেই লিঙ্কটি কাজ করা বন্ধ করে দেয় তবে সহজেই ইউআরএল থেকে অনুমান করা যায় যে "প্রোগ্রামটিকে জেলার বলা হয়" তাই এটি যুক্ত করা অতিরিক্ত কাজ হবে।
পল লেগাতো

4
অবশ্যই লিঙ্কটি এখন ভেঙে গেছে, এবং গুগল কোনও বিকল্প নেই।
owensmartin

4
লিঙ্কটি বর্তমানে আমার পক্ষে কাজ করে, এবং "জেল পোস্টারগ্রেস " এর জন্য গুগলিং গিথুব / উইজার / জেলারও হয়ে উঠেছে
পল লেগাতো

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