পটভূমি
আমি প্রচুর বড় প্রতিবেদন লিখি এবং সাধারণত একটি বৃহত স্বাস্থ্য রেকর্ড ডিবি (এসপি, ফাংশন, চাকুরী ইত্যাদি লিখি) বজায় রাখি। আসল স্কিমা এবং সফ্টওয়্যার যা এটি ব্যবহার করে তা অন্য একজন বিক্রেতার কাছ থেকে, সুতরাং আমি এটি সম্পর্কে কাঠামোগতভাবে খুব বেশি পরিবর্তন করতে পারি না। অনেকগুলি রেকর্ড রয়েছে যার জন্য ল্যাব, পদ্ধতি, ভ্যাকসিন ইত্যাদির মতো ট্র্যাকিংয়ের প্রয়োজন হয় এবং সেগুলি কয়েক ডজন টেবিল জুড়ে ছড়িয়ে ছিটিয়ে থাকে, যার অনেকগুলি ফুলে ও খারাপভাবে সূচিযুক্ত হয় না (আমি এটি কিছুটা ঠিক করতে সক্ষম হয়েছি)।
সমস্যাটি
সমস্যাটি হ'ল ডিবি-র উপর আমাদের নিয়ন্ত্রণ খুব কমই রয়েছে এবং যেহেতু এটি কোনও আপডেট বা প্যাচ থেকে পরিবর্তন হতে পারে, তাই এই প্রতিবেদনগুলি রচনা এবং বজায় রাখা কঠিন এবং ক্লান্তিকর করে তোলে - বিশেষত যখন প্রচুর পরিমাণে ওভারল্যাপ থাকে। এটি কেবলমাত্র একটি প্যাচ লাগে এবং আমি এক ডজন প্রতিবেদনের বৃহত অংশগুলি আবার লিখতে আটকে আছি। যোগ করা, নেস্টেড নির্বাচিত এবং গাদা প্রয়োগ করার সাথে সাথে অনুসন্ধানগুলি দ্রুত অচল ও ধীর হয়ে যায়।
আমার "সমাধান"
আমার পরিকল্পনাটি ছিল এই সমস্ত রেকর্ডটি একটি "ক্যাচ-অল" টেবিলটিতে লেখার, এবং এই সামগ্রিক সারণীতে রেকর্ড বজায় রাখতে মূল টেবিলগুলিতে ট্রিগারগুলি লিখতে হবে। অবশ্যই আমার নিশ্চিত করা দরকার যে আমার ট্রিগারগুলি আপডেটের পরেও অক্ষত ছিল তবে এটি একটি রক্ষণাবেক্ষণের দিক থেকে খুব সহজ হবে এবং কেবল ডেটা উল্লেখ করে fere
টেবিলটি পাতলা এবং লম্বা হবে, কেবলমাত্র প্রয়োজনীয় ডেটা সংরক্ষণ করে, এরকম কিছু:
CREATE TABLE dbo.HCM_Event_Log (
id INT IDENTITY,
type_id INT NULL,
orig_id VARCHAR(36) NULL,
patient_id UNIQUEIDENTIFIER NOT NULL,
visit_id UNIQUEIDENTIFIER NULL,
lookup_id VARCHAR(50) NULL,
status VARCHAR(15) NULL,
ordered_datetime DATETIME NULL,
completed_datetime DATETIME NULL,
CONSTRAINT PK_HCM_Event_Log PRIMARY KEY CLUSTERED (id)
)
তারপরে টাইপ_আইডি এবং আইটেম গ্রুপিংয়ের মতো জিনিসের জন্য আমার কাছে বিভিন্ন সম্পর্কিত টেবিল থাকবে।
আমি এই ধারণাটিকে দ্বিতীয় ভাবাতে শুরু করছি কারণ এই টেবিলগুলির বেশ কয়েকটি বেশ কিছুটা লেখা হয়েছে, এসপি এবং প্রতিবেদনগুলি আমি লিখতে চাইছি পাশাপাশি ডেটাও অনেকটা রেফারেন্স করবে। সুতরাং আমি উদ্বিগ্ন যে এই টেবিলটি এত বেশি I / O দিয়ে একটি রেকর্ড লকিং এবং পারফরম্যান্স দুঃস্বপ্নে পরিণত হবে।
আমার প্রশ্ন
একটি খারাপ বা একটি ভাল ধারণা? আমি বুঝতে পারি যে এসকিউএল সার্ভারে (২০০৮ r2 স্ট্যান্ডার্ড সংস্করণ বিটিডাব্লু) এবং "কখনও কখনও" নিয়মে প্রতিটি পরিস্থিতি আলাদা but তবে আমি সত্যিই কেবল সাধারণ পরামর্শ খুঁজছি।
আমি কোনও পরিষেবা ব্রোকার ব্যবহার করা বিবেচনা করতে শুরু করেছি, তবে আমি কেবল সাধারণ আপডেট / সন্নিবেশগুলি সম্পাদন করব ( স্বীকৃত উত্তরের বিকল্প দেখুন )। অনেক ক্ষেত্রে ডেটা রিয়েলটাইম হওয়া দরকার, তাই ব্যাকআপ ডিবি ব্যবহার করা সত্যিই কাজ করে না। পারফরম্যান্স ইতিমধ্যে আমাদের জন্য কিছুটা সমস্যা, তবে এর বেশিরভাগই হার্ডওয়্যার সম্পর্কিত যা শীঘ্রই সমাধান করা হবে।