কীভাবে আসল সময়ের বিজ্ঞপ্তিগুলি পাওয়া যায়, যখন একটি ডাটাবেস পরিবর্তন (সন্নিবেশ, আপডেট, মুছুন) ঘটে?


13

আমি একটি ড্যাশবোর্ড তৈরি করছি যা একটি ডাটাবেস সারণী নিরীক্ষণ করা উচিত। আমার কাছে কেবল ডাটাবেস অ্যাক্সেস রয়েছে (কোনও অ্যাপ্লিকেশন স্তর নেই)। সারণীটি বরং বড় (10 মিলিয়ন সারি), তবে দ্রুত পরিবর্তন হচ্ছে না (প্রতি মিনিটে 100 টি সন্নিবেশ / আপডেট)

টেবিল পরিবর্তন হয়েছে কিনা তা আমি কীভাবে জানতে পারি? আমি প্রতি সেকেন্ডে ডাটাবেস হিট করার চেষ্টা করব, তবে এটি একটি নিষ্ঠুর শক্তি প্রয়োগের মতো বলে মনে হচ্ছে ...

ডাটাবেসগুলি: মাইএসকিউএল / পোস্টগ্রিস


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

মন্তব্যের জন্য ধন্যবাদ. তবে নাগিওস কীভাবে সাহায্য করতে পারে? আমার কাছে কেবল ডাটাবেস অ্যাক্সেস রয়েছে। আমি রিমোট মেশিনে কিছু ইনস্টল করতে পারি না।
কিরিল

3
আপনি কি সত্যিই বিজ্ঞপ্তি পেতে চান - আসল সময়ে - প্রতিবার একটি সারি sertedোকানো বা আপডেট করা হলে? আবার চিন্তা কর.
তুলিনাস কর্ডোভা

আপনার কাছে অ্যাপ্লিকেশন স্তর না থাকার কোনও বৈধ কারণ আছে কি? এটি আমার কাছে কাজগুলি করার সর্বোত্তম উপায় বলে মনে হবে, যেমন একটি অ্যাপ্লিকেশন স্তর রয়েছে যা পর্যবেক্ষণ পরিচালনা করে। যেমন ডাটাবেস সার্ভার থেকে ইমেল প্রেরণ কোনও পরিষ্কার আর্কিটেকচারের মতো লাগে না doesn't
জুহিস্ট

আমার কাছে একটি ছোট মাইএসকিএল
সাইক্লোনকোড

উত্তর:


9

আপনি ট্রিগার ব্যবহার করতে পারেন।

CREATE TRIGGER notifyMe
ON table1
AFTER INSERT, UPDATE, DELETE 
AS
   EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'DB AutoMailer',
        @recipients = 'user@example.com',
        @body = 'The DB has changed',
        @subject = 'DB Change';
GO

আমি নিশ্চিত নই যে প্রতি সেকেন্ডে ডাটাবেস হিট করার চেয়ে এটি আরও ভাল হবে, না আপনি কি মেইলে পুরো পরিবর্তনটি প্রেরণ করবেন এবং ড্যাশবোর্ড সফ্টওয়্যারটি ইমেলটিকে পার্স করতে দেবেন?
কিরিল

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

2
ইমেল প্রেরণের পরিবর্তে, আপনি কোনও সঞ্চিত প্রক্রিয়াও কল করতে পারেন যা ড্যাশবোর্ড সমর্থন করে এমন একটি ওয়েব এপিআইয়ের সাথে সংযোগ স্থাপন করে। বিশদ জন্য এখানে দেখুন: forums.asp.net/t/…
স্টিচরে

3
অথবা ট্রিগাররা একটি অতিরিক্ত টেবিলের মধ্যে ডেটা রেখেছেন যা আপনি নিজের ইচ্ছামতো বিরতিতে জিজ্ঞাসা করেছেন (এবং খালি)। প্রযুক্তিগতভাবে 'রিয়েল টাইম' নয়, তবে এটির মতো দেখতে তৈরি করা যেতে পারে।
জান ডগজেন

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

3

PostgreSQL এর জন্য আমি যখন সারি পরিবর্তিত হয় তখন ডাটাবেস থেকে বিজ্ঞপ্তি পাওয়ার একটি উপায় জানি।

  1. সন্নিবেশ / আপডেট / মোছা ঘটলে ট্রিগার ব্যবহার করুন।
  2. ঘটনা ঘটলে ক্লায়েন্ট সকেটে একটি বিজ্ঞপ্তি প্রেরণ করুন।
  3. আপনার অ্যাপ্লিকেশনটির সার্ভারে একটি ক্লায়েন্ট রয়েছে তা নিশ্চিত হন।
  4. তারপরে আপনার অ্যাপ্লিকেশনটি একটি বিজ্ঞপ্তি গ্রহণ করবে।

আপনি আমার কোড বা পোস্টগ্রেএসকিউএল এর ডকুমেন্টেশন দেখতে পারেন ।

দেখে মনে হচ্ছে বিজ্ঞপ্তিটি নির্ভরযোগ্য বিজ্ঞপ্তি নয়, তবে কমপক্ষে এটি আমার পক্ষে কাজ করে।


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