পোস্টগ্রিসে একটি বস্তুগত দর্শন প্রতিস্থাপন করুন


23

আমি Postgres 9.3নতুন কলামগুলির সাথে আপডেট করতে চাই তাতে আমার একটি বাস্তব রূপ রয়েছে। তবে অন্যান্য বস্তুগত দৃষ্টিভঙ্গিও এই দৃষ্টিভঙ্গির উপর নির্ভর করে এবং ত্রুটি বার্তাটি ইঙ্গিত দেয় যে যখন অন্য বস্তুগুলির উপর নির্ভর করে তখন ভিউ বাদ দেওয়া সম্ভব হয় না।

ত্রুটি: বস্তুগত দৃশ্য সর্বশেষ_চાર્জগুলি ফেলে দিতে পারে না কারণ অন্যান্য বস্তুগুলি এর উপর নির্ভর করে

ডকুমেন্টেশন থেকে এটিও উপস্থিত হয় যে REPLACE কীওয়ার্ডটি বস্তুগত দৃশ্যের জন্য বৈধ নয়। সমস্ত নির্ভরশীল বস্তুগুলি ফেলে রেখে এবং প্রতিটি পুনর্নির্মাণের বাইরে কি কোনও শর্টকাট রয়েছে?


7
দুঃখের বিষয়, আমি মনে করি আপনি সেগুলি ফেলে দিয়ে পুনর্নির্মাণে আটকে আছেন।
ক্রেগ রিঞ্জার

উত্তর হিসাবে উত্তর যোগ করতে আগ্রহী?
dezso

উত্তর:


17

পোস্টগ্রি 9.4 এর হিসাবে: থেকে ভিন্ন দৃশ্য তৈরি করুন ডকুমেন্টেশন , ডকুমেন্টেশন তৈরি রূপায়িত দেখুন উল্লেখ না শব্দ প্রতিস্থাপন করুন। সমস্ত নির্ভরশীল বস্তুগুলি ফেলে রেখে এবং প্রতিটি পুনর্নির্মাণের বাইরে কোনও শর্টকাট নেই বলে মনে হয়।

আপনি যখন এটি করেন, আমি কেবল দুটি ছোট জিনিসই সুপারিশ করতে পারি:

  1. সমস্ত নির্ভরশীল অবজেক্টের একটি তালিকা পেতে ড্রপ ম্যাটারিয়ালাইজড ভিউ ব্লেব্লা ক্যাসকেড ব্যবহার করুন
  2. একটি লেনদেনে সমস্ত নির্ভরশীল অবজেক্টের ড্রপ এবং বিনোদন করুন।

1
ধন্যবাদ, আমি এটি ঠিক এভাবেই করছি। বিশ্লেষণাত্মক উদ্দেশ্যে এমন একটি ভিত্তি তৈরি করা হয়েছে যা অন্য অনেক মতামতে পুনঃব্যবহার হয়ে যায় সেদিকে সোজা রাখতে ব্যথা pain এই বেস ভিউটি খুব কমই পরিবর্তিত হয়, তবে এর উপর নির্ভর করে যা প্রতিদিন পরিবর্তন হয় change
জন

4

আমার পরিস্থিতির জন্য, আমি একটি ভিউ স্তর ব্যবহার করে ড্রপগুলি সীমাবদ্ধ করতে পছন্দ করি:

  1. "_ নতুন" এর সাথে প্রত্যয়যুক্ত বস্তুগত দৃশ্যের একটি অনুলিপি তৈরি করুন এবং পারফরম্যান্সের জন্য "কোনও ডেটা ছাড়াই" ব্যবহার করুন, নিশ্চিত করুন যে কোনও সূচকও প্রত্যয় এবং ডিআরপি-র মাধ্যমে আবিষ্কার করা অন্য কোনও নির্ভরশীল অবজেক্টের সাহায্যে তৈরি করা হয়েছে ... ক্যাসকেড
  2. বিমূর্ততার স্তর সরবরাহ করতে নতুন পদার্থযুক্ত দৃষ্টিভঙ্গির উপর একটি ভিউ তৈরি করুন যাতে আমার এটি কেবলমাত্র এক জায়গায় বদলাতে হবে
  3. পরিবর্তে নতুন দৃষ্টিভঙ্গি উল্লেখ করার জন্য বিদ্যমান নির্ভরতাগুলি পরিবর্তন করুন (আগে প্রয়োজন হলে ডেটা রিফ্রেশ করুন)
  4. মূল বস্তুযুক্ত দর্শন এবং সূচকগুলি ফেলে দিন যেখানে এখন কোনও নির্ভরশীলদের থাকা উচিত নয়
  5. আসল নামগুলি পুনরুদ্ধার করতে প্রত্যয়টি ফেলে দেওয়ার জন্য বস্তুগত দৃষ্টিভঙ্গি এবং সূচিগুলি পরিবর্তন করুন

যেমন।

create table test (myfield int);
insert into test values (1);
create materialized view mv_test as select myfield from test;
create view v_test as select myfield from mv_test;
select * from v_test;
create materialized view mv_test_new as select myfield, myfield+1 as myfield2 from test;
alter view v_test rename to v_test_old;
alter materialized view mv_test rename to mv_test_old;
create view v_test as select myfield,myfield2 from mv_test_new;
select * from v_test;
alter materialized view mv_test_new rename to mv_test;
drop view v_test_old; -- when ready
drop materialized view mv_test_old; -- when ready

এই শেষ দুটি পদক্ষেপের বিষয়ে আমি পরিষ্কার নই। 4 একটি বাক্য যা 5 এ চলে? আপনি কিছু নামযুক্ত ম্যাটভিউ এবং দর্শন দিয়ে একটি দ্রুত উদাহরণ করতে পারেন?
কিম্বো 305

সংক্ষিপ্ত বাক্যটি সংশোধন করে এবং উদাহরণটি যুক্ত করেছে
রুইডিসি

1

পিজএডমিনে (সংস্করণ ৪.০), আমি বৈশিষ্ট্য বাক্সে সংজ্ঞাটি (আমি যেখানে একটি ক্লজ যুক্ত করেছি) সহজেই সংশোধন করতে পারি। আপনার সমস্যাটি সেভাবে সমাধান করা যেতে পারে।

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