কোনও ডোমেন সমৃদ্ধ অ্যাপ্লিকেশনটিতে রিপোর্টিং এবং ড্যাশবোর্ডের জন্য ডেটা পুনরুদ্ধারের জন্য সেরা অনুশীলন বা ডিজাইনের নিদর্শন


44

প্রথমত, আমি বলতে চাই এটি একটি উপেক্ষিত প্রশ্ন / ক্ষেত্র বলে মনে হচ্ছে, সুতরাং যদি এই প্রশ্নের উন্নতির প্রয়োজন হয় তবে আমাকে এটিকে একটি দুর্দান্ত প্রশ্ন তৈরি করতে সহায়তা করুন যা অন্যের উপকার করতে পারে! আমি এমন লোকদের পরামর্শ এবং সাহায্যের সন্ধান করছি যারা এই সমস্যার সমাধান করেছেন যা এই সমস্যার সমাধান করে, কেবলমাত্র চেষ্টা করার মত ধারণা নয়।

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

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

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

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

উদাহরণস্বরূপ, আসুন বলি যে সক্রিয় প্রকল্পগুলির একটি তালিকা দেখানোর জন্য একটি প্রতিবেদন / ড্যাশবোর্ডের প্রয়োজন (10,000 প্রকল্পের কল্পনা করুন)। প্রতিটি প্রকল্পের সাথে এটি প্রদর্শিত মেট্রিকের একটি সেট প্রয়োজন হবে, উদাহরণস্বরূপ:

  1. মোট বাজেট
  2. তারিখ চেষ্টা
  3. দহনের হার
  4. বর্তমান বার্ন রেটে বাজেট ক্লান্তি তারিখ
  5. প্রভৃতি

এর প্রত্যেকটিতে প্রচুর ব্যবসায়িক যুক্তি জড়িত। এবং আমি কেবল সংখ্যা বা কিছু সাধারণ যুক্তির কথা বলছি না। আমি বাজেট পাওয়ার জন্য কথা বলছি, আপনাকে 500 টি ভিন্ন হারের সাথে একটি রেট শিট প্রয়োগ করতে হবে, প্রতিটি কর্মীর সময়ের জন্য একটি (কিছু প্রকল্পে, অন্যের একটি গুণক রয়েছে), ব্যয় এবং কোনও উপযুক্ত মার্কআপ ইত্যাদি প্রয়োগ করতে হবে। যুক্তি বিস্তৃত। ক্লায়েন্টের জন্য যুক্তিসঙ্গত পরিমাণে এই ডেটাটি পেতে এটি প্রচুর একত্রিত এবং ক্যোয়ারী টিউনিং নিয়েছিল।

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

এই ক্ষেত্রেগুলি দেখে মনে হয় যে এসকিউএল ডেটা ক্রাঞ্চ করার ক্ষেত্রে ভাল, এবং কেন এটি ব্যবহার করবেন না? তবে তারপরে আপনার ডোমেন মডেলের বাইরে আপনার ব্যবসায়িক যুক্তি রয়েছে। ব্যবসায়ের যুক্তিতে যে কোনও পরিবর্তন আপনার ডোমেন মডেল এবং আপনার প্রতিবেদনের সমষ্টি স্কিমগুলিতে পরিবর্তন করতে হবে।

আমি কীভাবে কোনও ডোমেইন চালিত নকশা এবং ভাল অভ্যাসের ক্ষেত্রে কোনও অ্যাপ্লিকেশনটির রিপোর্টিং / ড্যাশবোর্ড অংশটি ডিজাইন করতে পারি তার জন্য আমি খুব ক্ষতি করছি।

আমি এমভিসি ট্যাগ যুক্ত করেছি কারণ এমভিসি হ'ল ডিজাইনের স্বাদ ডু ভ্রমণ এবং আমি এটি আমার বর্তমান ডিজাইনে ব্যবহার করছি তবে প্রতিবেদনের ডেটা এই ধরণের প্রয়োগের সাথে কীভাবে খাপ খায় তা বুঝতে পারি না।

আমি এই অঞ্চলে কোনও সহায়তা খুঁজছি - বই, ডিজাইনের নিদর্শন, গুগলের মূল শব্দ, নিবন্ধগুলি, যে কোনও কিছু। আমি এই বিষয়টিতে কোনও তথ্য খুঁজে পাই না।

সম্পাদনা করুন এবং অন্য উদাহরণ

আরেকটি নিখুঁত উদাহরণ আমি আজ জুড়ে ছড়িয়েছি। গ্রাহক গ্রাহক বিক্রয় দলের জন্য একটি প্রতিবেদন চান। তারা সাধারণ মেট্রিকের মতো দেখতে চায়:

প্রতিটি বিক্রয় ব্যক্তির জন্য, আজ পর্যন্ত তাদের বার্ষিক বিক্রয় কত?

তবে তা জটিল। প্রতিটি বিক্রয় ব্যক্তি একাধিক বিক্রয় সুযোগে অংশ নিয়েছিল। কিছু তারা জিতেছে, কিছু তারা জিতেনি। প্রতিটি বিক্রয় সুযোগে, একাধিক বিক্রয়কর্মী রয়েছেন যারা প্রত্যেককে তাদের ভূমিকা এবং অংশগ্রহণ অনুযায়ী বিক্রয়ের জন্য শতাংশের এক শতাংশ বরাদ্দ করা হয়। সুতরাং এখন আপনি এটির জন্য ডোমেনটির মধ্য দিয়ে যাওয়ার কল্পনা করুন ... প্রতিটি বিক্রয় ব্যক্তির ডাটাবেস থেকে এই ডেটাটি টানতে আপনাকে কত পরিমাণ অবজেক্ট রিহাইড্রেশন করতে হবে:

সকলের জন্য SalesPeople->
প্রত্যেকের জন্য তাদের SalesOpportunities->
প্রত্যেকের জন্য তার বিক্রির শতাংশ পান এবং তাদের বিক্রয় পরিমাণ গণনা
করুন তারপরে তাদের সমস্ত SalesOpportunityবিক্রয় পরিমাণ যুক্ত করুন।

এবং এটি এক মেট্রিক। অথবা আপনি একটি এসকিউএল কোয়েরি লিখতে পারেন যা এটি দ্রুত এবং দক্ষতার সাথে করতে এবং এটি দ্রুত হওয়ার জন্য টিউন করতে পারে।

সম্পাদনা 2 - সিকিউআরএস প্যাটার্ন

আমি সিকিউআরএস প্যাটার্ন সম্পর্কে পড়েছি এবং আগ্রহের সময়, এমনকি মার্টিন ফোলারও বলেছেন যে এটি পরীক্ষা করা হয়নি। অতীতে এই সমস্যাটি কীভাবে সমাধান হয়েছে। এটি এক পর্যায়ে বা অন্য কোনও সময়ে প্রত্যেকের মুখোমুখি হতে হয়েছিল। সাফল্যের ট্র্যাক রেকর্ড সহ একটি প্রতিষ্ঠিত বা সুসজ্জিত দৃষ্টিভঙ্গি কী?

সম্পাদনা 3 - রিপোর্টিং সিস্টেম / সরঞ্জামসমূহ

এই প্রসঙ্গে বিবেচনা করার মতো আরেকটি বিষয় হ'ল রিপোর্টিং সরঞ্জাম। পরিষেবাদি / স্ফটিক প্রতিবেদনগুলি, বিশ্লেষণ পরিষেবাদিগুলি এবং কাগনোসেন্টি ইত্যাদি ইত্যাদি রিপোর্টিং এসকিউএল / ডাটাবেস থেকে ডেটা আশা করে। আমি সন্দেহ করি যে এর পরে আপনার ডেটা আপনার ব্যবসায়ের মাধ্যমে আসবে। এবং তবুও তারা এবং তাদের মতো অন্যান্যরা প্রচুর বৃহত সিস্টেমে প্রতিবেদনের একটি অতীব গুরুত্বপূর্ণ অংশ। এই সিস্টেমগুলির ডেটা উত্সে এবং পাশাপাশি নিজস্ব প্রতিবেদনে এমনকি ব্যবসায়ের যুক্তি যেখানে সঠিকভাবে পরিচালিত হয় সেগুলির ডেটা কীভাবে করা হয়?


2
ক্রস পোস্ট করবেন না দয়া করে। দেখুন programmers.stackexchange.com/questions/225145/... , programmers.stackexchange.com/questions/225153/...
phresnel

3
দুঃখিত না মানে। মোড আমাকে এখানে পুনরায় পোস্ট করতে বলেছেন, তবে তখন স্পষ্টতই একই প্রশ্নটি স্থানান্তর করতে সক্ষম হয়েছিল তাই আমি দু'জন পেয়েছি। এর জন্যে দুঃখিত.
রিচার্ড 23'14

আমি বিভ্রান্ত কেউ কি এটা করেনি? কেউ এই সমস্যার মুখোমুখি?
রিচার্ড

আপনার 'উদ্বেগের বিচ্ছেদ' পুনরায় কাজ / প্রতিবেদনকে কিছুটা তাত্ত্বিক নয়? আপনি বলতে পারেন যে প্রতিবেদনের পক্ষের ব্যবসায়িক বিধিও রয়েছে, তাই আপনি ব্যবসায়ের যুক্তি পুরো শৃঙ্খলে ফেলতে পারবেন না। আপনি যে দ্বিআইয়ের সরঞ্জামটি ব্যবহার করুন না কেন, আপনাকে ইনপুট কাজ থেকে রিপোর্টিং পর্যায়ে (পুরো সামগ্রীর সংজ্ঞা দেওয়া ইত্যাদি) পুরোপুরি মধ্যবর্তী ফলাফল তৈরি করতে হবে। তারপরে এটি কোথায় ক্রাঙ্ক করতে হবে তা নিয়ে প্রশ্ন ফোটায়। হতে পারে আপনি একটি পিরামিড (শীর্ষটি কাটা বন্ধ) বা ফানেল রূপক দিয়ে সমস্যার কাছে যেতে পারেন।
জান দোগজেন

@ জনডোগেন এটি ঠিক আমার বক্তব্য। বিআই সরঞ্জাম এতে বিএল যুক্তি রাখতে হবে। এখন আমি আমার সফ্টওয়্যার পণ্যের সমৃদ্ধ ডোমেনটিতে থাকা বিএলটিকে নকল করছি। এটা কি ঠিক আছে?
রিচার্ড

উত্তর:


16

এটি একটি খুব গ্লীব উত্তর, তবে বিষয়টি হৃদয়ের সাথে সঠিকভাবে পাওয়া:

ডিডিডি-র ক্ষেত্রে সম্ভবত বাউন্ডেড কনটেক্সট হিসাবে রিপোর্টিংয়ের কথা ভাবা উচিত? সুতরাং "দ্য" ডোমেন মডেলটির কথা বিবেচনা করার পরিবর্তে, আপনার একথা ভাবতে রাজি হওয়া উচিত যে একাধিক মডেল থাকা ঠিক আছে। সুতরাং হ্যাঁ ঠিক আছে যদি প্রতিবেদনের ডোমেনটিতে ব্যবসায়িক যুক্তিগুলির প্রতিবেদন করা হয় ঠিক যেমনভাবে লেনদেনের ডোমেনের মধ্যে লেনদেনমূলক ব্যবসায়িক যুক্তি থাকা ঠিক আছে।

প্রশ্ন হিসাবে, এসকিউএল সঞ্চিত পদ্ধতি বনাম ডোমেন মডেল অ্যাপ্লিকেশন কোডে বলুন, লেনদেনমূলক সিস্টেমের মতো রিপোর্টিং সিস্টেমের জন্য একই উপকারিতা এবং কনস প্রয়োগ করে।

যেহেতু আমি দেখতে পেয়েছি যে আপনি এই প্রশ্নে অনুগ্রহ যুক্ত করেছেন, আমি আবার প্রশ্নটি পড়েছি এবং লক্ষ্য করেছি যে আপনি এই বিষয়ে নির্দিষ্ট উত্স চেয়েছেন, তাই আমি ভেবেছিলাম যে আপনি এই বিষয়ে অন্যান্য স্ট্যাক ওভারফ্লো প্রশ্নগুলি দেখবেন সে পরামর্শ দিয়েই শুরু করব, এবং আমি এটি পেয়েছি https://stackoverflow.com/questions/11554231/how-does-domain-driven-design-handle-reporting

এর সাধারণ বক্তব্যটি হ'ল আপনার সিস্টেমের জন্য প্যাটার্ন হিসাবে সিকিউআরএস ব্যবহার করা, যা ডিডিডির সাথে সামঞ্জস্যপূর্ণ, এবং রিপোর্টিংয়ের উপায় হিসাবে ক্যোয়ারী পক্ষের দায়িত্বগুলির উপর নির্ভর করে, তবে আমি নিশ্চিত নই যে এটি একটি সহায়ক উত্তর is আপনার ক্ষেত্রে.

আমি এই http://www.martinfowler.com/bliki/ReportingDatabase.html খুঁজে পেয়েছি , যা আমি এখান থেকে লিঙ্ক পেয়েছি: http://groups.yahoo.com/neo/groups/domaindrivendesign/conversations/topics/2261

বিষয়টি নিয়ে এসিএম-এর একটি আকর্ষণীয় নিবন্ধটি এখানে দেওয়া হয়েছে: http://dl.acm.org/citation.cfm?id=2064685 তবে এটি একটি পে-ওয়াল এর পিছনে তাই আমি আসলে এটি পড়তে পারি না (এসিএম সদস্য নয় :()।

অনুরূপ প্রশ্নের এখানে উত্তরও রয়েছে: https://stackoverflow.com/questions/3380431/cqrs-ddd-synching-reporting-database

এবং এটির একটি: http://snape.me/2013/05/03/applying-domain-driven-design-to-data-warehouses/

আশাকরি এটা সাহায্য করবে!


হাই @ রিবাল্ড এডি। উত্তর দেওয়ার জন্য ধন্যবাদ. আমার কাছে গ্লীব লাগছে না। সুতরাং আপনি বলছেন যে সঞ্চিত প্রক্রিয়াগুলি প্রতিবেদন করার জন্য ডোমেন স্তর হিসাবে বাউন্ডড কনটেক্সট হিসাবে আচরণ করা ঠিক আছে?
রিচার্ড

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

4

আপনার প্রশ্ন থেকে আমার বোধগম্যতা হল: প্রতিদিনের কাজের জন্য আবেদন রয়েছে

দেখুন >> কন্ট্রোলার >> মডেল (বিএল) >> ডাটাবেস (ডেটা)

উদ্দেশ্যে রিপোর্ট করার জন্য আবেদন

দেখুন >> নিয়ন্ত্রক >> মডেল >> ডাটাবেস (ডেটা + বিএল)

সুতরাং ' টাস্ক অ্যাপ্লিকেশন'-এর জন্য বিএল-এর পরিবর্তনও' রিপোর্টিং 'বিএল- তে পরিবর্তন আনবে । এটাই কি আপনার আসল সমস্যা? দু'বার পরিবর্তন করতে ঠিক আছে, সেই ব্যথা আপনাকে যেভাবেই নিতে হবে। কারণ উভয় বিএল তাদের নিজ নিজ উদ্বেগ দ্বারা পৃথক করা হয়। একটি হ'ল ডেটা আনার জন্য এবং একটি ডেটা একত্রিত করার জন্য। এছাড়াও, আপনার আসল বিএল এবং সমষ্টিগত বিএল বিভিন্ন প্রযুক্তি বা ভাষায় লেখা হবে ( সি # / জাভা এবং এসকিউএল প্রো )। এটির কোনও রেহাই নেই।

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


3

আলগাভাবে কথা বলার জন্য প্রতিবেদন করা একটি সীমাবদ্ধ প্রসঙ্গ বা একটি সাবডোমেন। এটি ব্যবসায়ের বুদ্ধি অর্জনের জন্য ডেটা সংগ্রহ / সংগ্রহ এবং প্রক্রিয়াকরণের ব্যবসায়ের প্রয়োজনীয়তা সমাধান করে।

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

আপনি সম্ভবত এটি দুটি প্রাথমিক সমস্যার মধ্যে ভাগ করতে পারেন যা আপনি সমাধান করছেন:

  1. একত্রিত করা, বা গুদামজাত করা ডেটা। এটিতে কিছু ডেটা উত্স প্রক্রিয়া করা উচিত এবং তথ্যটি এমনভাবে সংযুক্ত করা উচিত যাতে এটি অন্য কোনও ডেটা উত্সে সঞ্চিত থাকে।

  2. ব্যবসায়ের বুদ্ধি সরবরাহের জন্য সম্মিলিত ডেটাসোর্স অনুসন্ধান করা।

এই সমস্যাগুলির কোনওটিই কোনও নির্দিষ্ট ডাটাবেস বা স্টোরেজ ইঞ্জিনের উল্লেখ করে না। আপনার ডোমেন স্তরটি কেবলমাত্র বিভিন্ন স্টোরেজ অ্যাডাপ্টারের দ্বারা আপনার অবকাঠামো স্তরে প্রয়োগ করা ইন্টারফেসগুলির সাথে ডিল করা উচিত।

আপনার বিভিন্ন কর্মী বা কিছু নির্ধারিত চাকরী থাকতে পারে, এটি কয়েকটি চলমান অংশে বিভক্ত:

  • কিছু জিজ্ঞাসা করার
  • সমষ্টি কিছু
  • কিছু সঞ্চয় করার জন্য

আশা করি আপনি সেখানে কিছু সিকিউআরএস জ্বলতে দেখবেন।

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

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

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


3

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

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

সমাধানটিতে ডেটা সেট ট্র্যাভারিংয়ের জন্য পুনরাবৃত্তির ব্যবহার এবং ক্লায়েন্টের জন্য উপযুক্ত স্তরের বিমূর্ততা সরবরাহ করা, ডেটা সাবসেটগুলির ডাবল-বাফারিং, মাল্টি-থ্রেডেড ডেটা পুনরুদ্ধার এবং কোয়েরি স্লিসিং সহ ডেটা পুনরুদ্ধার কৌশলগুলির সংমিশ্রণ বাস্তবায়নের অন্তর্ভুক্ত।


এটি কীভাবে আমার প্রশ্নের সাথে সম্পর্কিত বা এটি কীভাবে 3 ভোট এত তাড়াতাড়ি পেয়েছে তা নিশ্চিত নয়। আপনি কি এখানে কোনও লিঙ্ক অন্তর্ভুক্ত করার অর্থ দিয়েছিলেন?
রিচার্ড

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

2

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

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

আমি আপনার লেনদেনের ডেটা স্টোরের বিরুদ্ধে রিপোর্ট করার পরামর্শ দেব না।

আপনি যদি টিপতে পছন্দ করেন তবে এখানে আরও চিন্তাভাবনা রয়েছে:

  1. "সেরা" বিষয়গত এবং কী কাজ করে।
  2. আমি এগুলি নিজের লেখার চেয়ে একটি প্রতিবেদন পণ্য কিনেছি।
  3. যদি আপনি কোনও সম্পর্কিত ডেটাবেস ব্যবহার করেন, তবে এসকিউএল হল শহরের একমাত্র গেম।
  4. সঞ্চিত পদ্ধতিগুলি সেগুলি লেখার দক্ষতা আছে কিনা তার উপর নির্ভর করে।

আপনি কি প্রকল্পের ম্যানেজমেন্ট সফটওয়্যার ব্যবহার করেন? আমি তৈরি করার আগে কিনেছি। র‌্যালি এবং মাইক্রোসফ্ট প্রকল্পের মতো কিছু।


ধন্যবাদ @ ডিফাইমো। এই তথ্যটি কেবল আইনি কারণে সঞ্চিত নয়। এটি প্রচুর টন এবং ডেটা যা নিয়মিত ব্যবহৃত হয় এবং প্রতিবেদন করা হয়। সংস্থাটি রিপোর্ট এবং ড্যাশবোর্ড দ্বারা বেঁচে থাকে এবং মারা যায়। এটি সর্বোপরি প্রকল্প পরিচালনার সফ্টওয়্যার। ডেটা সহ এই প্রতিবেদনগুলি এবং ড্যাশবোর্ডগুলি সরবরাহ করার সর্বোত্তম উপায় কী? এটি সংহত করে এসকিউএল দিয়ে এটি টানছেন? এটির জন্য ব্যবসায়ের যুক্তি স্টোর পদ্ধতিতে থাকা ঠিক আছে? আমার সব প্রশ্ন এখনও উত্তরহীন!
রিচার্ড

আপনার কাছে একটি উত্তর আছে - ডেটা গুদাম। এর মতো শব্দগুলি আপনি শুনতে চাননি। সম্পাদনাগুলির জন্য উপরে দেখুন।
ডুফাইমো

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

পুনরায়: আপনি তৈরির আগে কিনুন - আপনি কোনও সংস্থাকে তাদের ব্যবসায়ের সাথে ফিট করার জন্য নির্মিত সফ্টওয়্যার চাইলে তাদের ব্যবসাকে সফ্টওয়্যারটিতে moldালতে বাধ্য করতে পারবেন না। সমাবেশ এবং এমএস প্রকল্প প্রত্যেকের প্রকল্প পরিচালনার প্রয়োজনের সাথে খাপ খায় না। মোটেই
রিচার্ড

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

2

প্রথমে কিছু পরিভাষা, আপনি যাকে টাস্ক সাইডটি বলছেন তা লেনদেন হিসাবে পরিচিত এবং প্রতিবেদনের দিকটি অ্যানালিটিক্স।

আপনি ইতিমধ্যে সিকিউআরএস উল্লেখ করেছেন যা একটি দুর্দান্ত পদ্ধতির তবে পদ্ধতির ব্যবহারিক প্রয়োগ খুব কম রয়েছে।

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

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

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

সেই পৃষ্ঠা থেকে বেশ কয়েকটি লিঙ্কযুক্ত বই রয়েছে যা আপনাকে এগিয়ে যেতে সহায়তা করতে ইটিএল, স্টার স্কিমা ডিজাইন, বিআই, ড্যাশবোর্ডস এবং অন্যান্য বিষয়গুলি সম্পর্কে আরও বিশদে যায়।

আপনি যেখান থেকে আপনি যেখানে যেতে চান সেখানে যাওয়ার দ্রুততম উপায় হ'ল একজন বিআই বিশেষজ্ঞের ভাড়া নেওয়া এবং তিনি আপনাকে যা প্রয়োজন তা বাস্তবায়নের সময় তাকে ছায়া দেওয়া।


হাই মাইক. আমি ডাটাওয়ারহাউজিং এবং বিআইয়ের সাথে খুব পরিচিত, 15 বছর ধরে এটি করে চলেছি। আমার প্রশ্নটি কোনও ডোমেন চালিত ডিজাইনের প্রসঙ্গে কীভাবে এটি পরিচালনা করতে পারে তা নিয়ে কাজ করে। ডেটাওয়ারহাউসগুলি কি ঠিক আছে? বা এগুলি কি আপনার ডোমেন ব্যবসায়ের স্তরটিতে ভেজাল? যদি উত্তরটি কোনও ডেটা গুদাম তৈরি করা হয় এবং সেখান থেকে ডেটা টানতে থাকে তবে সে জন্য সেখানে প্রচুর সাহিত্য এবং পরামর্শ রয়েছে। তবে তারপরে আপনি নিজের ডোমেনের বাইরে ব্যবসায়িক যুক্তিকে নকল করছেন। এটা কি ঠিক আছে? এটাই আমার প্রশ্ন।
রিচার্ড

যেমন আমি সিকিউআরএস ঠিকানা উল্লেখ করেছি যেগুলি কমান্ড (লেনদেনের) এবং কোয়েরি (রিপোর্টিং) পাশ দিয়ে সংগ্রহস্থল পৃথক করে ভাল প্রয়োজন need এমনকি সিকিউআরএসের অন্য ট্র্যাপিংগুলি ছাড়াই ডেটা গুদাম এবং এটেল আপনার ডোমেনের ক্লায়েন্ট তবে তারা এটিকে কোনও পরিবর্তন করে না। সুতরাং বিএল এখনও ডোমেনের মধ্যে রয়েছে।
মাইকেল ব্রাউন

1
তারা ডোমেনটি সংশোধন করে না ... সুতরাং ডেটা গুদামের জন্য ডেটা তৈরি করতে সমস্ত ইটিএল প্রক্রিয়া এবং ডেটা ট্রান্সফর্মেশনগুলি আপনার ডোমেনের মধ্য দিয়ে যেতে হবে? অন্যথায় আপনার বিটি আপনার ইটিএল প্রক্রিয়াগুলির সমস্ত যুক্তিতে নকল হয়ে গেছে।
সমৃদ্ধ

1
হ্যাঁ আমি বলব যে কোনও ইটিএলকে সরাসরি ডোমেনটি ব্যবহার করা উচিত। এটি আপনাকে ভঙ্গুর সরঞ্জামগুলি এড়াতে দেয় যা ডাটাবেসে প্রতিটি অভ্যন্তরীণ পরিবর্তন দিয়ে আবার লিখতে হয়।
মাইকেল ব্রাউন

2

রিপোর্টিং দিকটি কী? ডেটা গুদামগুলি কি গ্রহণযোগ্য, বা তারা ডেটাবেজে ব্যবসায়ের লজিক এবং খুব ডেটা নিজেই অন্তর্ভুক্ত করার কারণে এগুলি খারাপ নকশা?

আমি মনে করি না আপনি ব্যবসায়ের যুক্তি নিয়ে কথা বলছেন, এটি বেশি যুক্তিযুক্ত প্রতিবেদন করা। ব্যবহারকারীরা এই স্ক্রিনের তথ্য দিয়ে কী করবেন, এটি কি কেবল স্ট্যাটাস আপডেটের জন্য? আপনার ডোমেন মডেলটি লেনদেনের ক্রিয়াকলাপগুলির মডেল হিসাবে ব্যবহৃত হয়, প্রতিবেদন করা আলাদা উদ্বেগ। এসকিউএল সার্ভার থেকে ডেটা টানতে বা এটি একটি ডেটা গুদামে স্থাপন করা পরিস্থিতি প্রতিবেদনের জন্য উপযুক্ত।

আপনার ডোমেন মডেলটি আপনার ডোমেনের আক্রমণকারীদের কার্যকর করতে হবে যেমন কোনও প্রকল্প সদস্য একই সময়ে একই প্রকল্পে বুক করতে পারে না বা সপ্তাহে কেবলমাত্র x সংখ্যা বুক করতে পারে। অথবা আপনি এই প্রকল্পটিতে বুকিং দিতে পারবেন না কারণ এটি সম্পূর্ণরূপে ইত্যাদি ইত্যাদি etc

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

আপনার লেনদেন এবং প্রতিবেদনের প্রসঙ্গগুলি আলাদা রাখুন, একটি ডোমেন মডেল প্রতিবেদনের জন্য একটি সম্পর্কিত সম্পর্কিত ডাটাবেস তৈরি করা হয়নি।

সম্পাদনা

বিষয়টিতে দরকারী ব্লগ পোস্ট http://se-thinking.blogspot.se/2012/08/how-to-handle-reporting-with-domain.html


2

এটি 4 বছর পরে এবং আমি এই প্রশ্নটি আবার খুঁজে পেয়েছি এবং আমার কাছে উত্তরটি আমার কাছে রয়েছে।

আপনার অ্যাপ্লিকেশন এবং এটির নির্দিষ্ট প্রয়োজনীয়তার উপর নির্ভর করে আপনার ডোমেন / লেনদেনের ডাটাবেস এবং আপনার প্রতিবেদন পৃথক "সিস্টেম" বা "ইঞ্জিন" হতে পারে, বা সেগুলি একটি সিস্টেম দ্বারা পরিবেশন করা যেতে পারে। তাদের অবশ্য যৌক্তিকভাবে পৃথক হওয়া উচিত - যার অর্থ তারা ইউআইতে ডেটা পুনরুদ্ধার এবং সরবরাহের বিভিন্ন উপায় ব্যবহার করে।

আমি তাদের শারীরিকভাবে পৃথক (যৌক্তিকভাবে পৃথক হওয়া ছাড়াও) পছন্দ করি তবে অনেক সময় আপনি তাদের একসাথে শুরু করেছিলেন (শারীরিকভাবে) এবং তারপরে, অ্যাপ্লিকেশন পরিপক্ক হওয়ার সাথে সাথে আপনি তাদের পৃথক করেন।

যে কোনও উপায়ে আবারও সেগুলি যুক্তিযুক্তভাবে আলাদা হওয়া উচিত। রিপোর্টিং সিস্টেমে ব্যবসায়ের যুক্তি সদৃশ করা ঠিক আছে। গুরুত্বপূর্ণ বিষয়টি হল যে প্রতিবেদনের সিস্টেমটি ডোমেন সিস্টেমের মতো একই উত্তর পেতে পারে - তবে বিভিন্ন উপায়ে এটি পাওয়ার সম্ভাবনা রয়েছে। উদাহরণস্বরূপ, আপনার ডোমেন সিস্টেমে প্রসেসাল কোডগুলিতে প্রয়োগ হওয়ার সম্ভাবনা রয়েছে (সম্ভবত) strict ডেটা পড়লে রিপোর্টিং সিস্টেম সেই একই নিয়মগুলি প্রয়োগ করতে পারে তবে সেটি সেট ভিত্তিক কোডের মাধ্যমে করে (যেমনঃ এসকিউএল)।

আপনার অ্যাপ্লিকেশনটির আর্কিটেকচারের বিবর্তনটি বাস্তবে যেমন প্রদর্শিত হবে ঠিক তেমনই বিকশিত হতে পারে:

স্তর 1 - লজিকালি ডোমেন এবং প্রতিবেদনের সিস্টেমগুলি আলাদা করা হয়েছে তবে এখনও একই কোডবেস এবং ডাটাবেসে রয়েছে

স্তর 1 - যৌক্তিকভাবে পৃথক ডোমেন এবং প্রতিবেদনের সিস্টেম, তবে এখনও একই কোডবেসে in

স্তর 2 - যৌক্তিকভাবে পৃথক ডোমেন এবং প্রতিবেদনের সিস্টেম, তবে সিঙ্কের সাথে এখন পৃথক ডাটাবেস।

স্তর 2 - যৌক্তিকভাবে পৃথক ডোমেন এবং প্রতিবেদনের সিস্টেম, তবে এখন পৃথক ডাটাবেস

স্তর 3 - যৌক্তিক এবং শারীরিকভাবে পৃথক ডোমেন এবং রিপোর্টিং সিস্টেম এবং সিঙ্কের সাথে পৃথক ডাটাবেস

স্তর 3 - যৌক্তিক এবং শারীরিকভাবে পৃথক ডোমেন এবং রিপোর্টিং সিস্টেম এবং সিঙ্কের সাথে পৃথক ডাটাবেস

মূল ধারণাটি হ'ল রিপোর্টিং এবং ডোমেনের মূলত আলাদা প্রয়োজন। বিভিন্ন ডেটা প্রোফাইল (বনাম লেখাগুলি এবং আপডেট ফ্রিকোয়েন্সি পড়ে), বিভিন্ন কার্য সম্পাদনের প্রয়োজনীয়তা ইত্যাদি So তাই তাদের আলাদাভাবে প্রয়োগ করা দরকার এবং এটি ব্যবসায়ের যুক্তির কিছু নকল প্রয়োজন।

একে অপরের সাথে টু ডেট এবং রিপোর্টিং সিস্টেমের ব্যবসায়ের যুক্তি বজায় রাখার উপায় অবলম্বন করা আপনার ব্যবসায়ের বিষয়।


1

সক্রিয় প্রকল্পগুলির একটি তালিকা দেখানোর জন্য রিপোর্ট / ড্যাশবোর্ডের প্রয়োজন

প্রতিটি প্রকল্পের স্থিতিশীল ডাটাবেসে স্থিতিশীল, প্রতি-গণনা করা এবং সু-বিন্যাসিত তথ্য হিসাবে সংরক্ষণ করা উচিত এবং যেকোন সিমুলেশন ক্লায়েন্টকে ওয়েব অ্যাপ্লিকেশন হিসাবে পরিচালনা করা উচিত।

বর্তমান বার্ন রেটে বাজেট ক্লান্তি তারিখ

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

বিতরণ পরিবেশ ( ব্যক্তিগত বা পাবলিক মেঘ ) এর কল্পনা করে আপনি গণনার স্তর, ডাটাবেসের স্বল্প ব্যবহার এবং ক্যাশে মোট অভাবের জন্য প্রচুর ব্যয় পাবেন।

এটি কি প্রথমে ডোমেনের মাধ্যমে চালানো উচিত? পারফরম্যান্সের কী হবে?

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

সুতরাং প্রথমে অনুসন্ধান করুন, সফ্টওয়্যার আর্কিটেকচারটি শেষ করার আগে এটি বিতরণ করা ক্যাশে সিস্টেম হতে পারে ।

(অনুরোধ: সমষ্টি)! = 1: 1

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

ক্লায়েন্টের উপর গণনা বিতরণ করুন

আরেকটি প্রশ্ন, সফ্টওয়্যারটির নকশা শেষ করার আগে এটি হতে পারে, আমরা কতটা স্বাভাবিকীকরণ করতে পারি, ক্লায়েন্টের ব্রাউজারটি অর্পণ করতে চাই?

এটি এমভি * নামকরণ করা হয়েছিল , এটি সত্য যে এটি আজ ফ্যাশনেবল, এগুলি ছাড়াও এর অন্যতম উদ্দেশ্য হ'ল ওয়েব অ্যাপ (একক পৃষ্ঠা অ্যাপ) তৈরি করা, যা অনেক জটিল অ্যাপ্লিকেশনগুলির উপস্থিতি হিসাবে বিবেচনা করা যেতে পারে (এবং সৌভাগ্যক্রমে বিলগুলির জন্য যে আমরা মেঘ সরবরাহকারীকে অর্থ প্রদান করি, এগুলি ক্লায়েন্টে কার্যকর করা হয়)।

আমার উপসংহার তাই:

  1. কতগুলি অপারেশন ডেটা উপস্থাপনের জন্য বাস্তবিক প্রয়োজন তা বোঝা;

  2. এর মধ্যে কতগুলি পটভূমিতে করা যেতে পারে তা বিশ্লেষণ করুন (এবং তারপরে তাদের সাধারণীকরণের পরে ক্যাশে সিস্টেমের মাধ্যমে বিতরণ করা হবে);

  3. ক্লায়েন্টে কতগুলি অপারেশন কার্যকর করা যেতে পারে তা বুঝতে, প্রকল্পগুলির কনফিগারেশনটি পাওয়ার জন্য, ওয়েব অ্যাপে ভিউতে এটি চালানো এবং এভাবে ব্যাক-এন্ডে সম্পাদিত গণনা হ্রাস করা যায়;


হাই মার্কোস, আপনার উত্তরের জন্য ধন্যবাদ। ক্লায়েন্ট পক্ষের প্রাক-সমষ্টিগুলি করতে আমি যে দুটি সমস্যা দেখতে পাচ্ছি তা হ'ল ১ you আপনার প্রচুর ক্রিয়াকলাপ রয়েছে যার ফলস্বরূপ ফলস্বরূপ হতে পারে এবং ২. প্রচুর প্রাক্কলন প্রয়োজন হতে পারে। দুটি একসাথে রাখুন এবং আপনি সত্যই ভারী সংস্থান ব্যবহার পাবেন resource উদাহরণস্বরূপ ... বাজেটের পুনরায় গণনা করতে হবে যখন এ। বাজেটের কোনও বিলের হার পরিবর্তিত হবে (এটি বেশ কয়েকটি জিনিস দ্বারা উদ্দীপিত হতে পারে ... একটি ব্যবহারকারী ক্রিয়া, বা একটি নতুন রেটে একটি নির্ধারিত রোলওভার উদাহরণস্বরূপ নতুন আর্থিক বছরের শুরুতে হারগুলি পরিবর্তিত হয়), বা বি বাজেটের
সংকলন

... উদাহরণস্বরূপ ঘন্টা যোগ বা বিয়োগের জন্য পরিবর্তনগুলি। ইত্যাদি তালিকাই চলে। যতক্ষন পর্যন্ত # 2 সমষ্টিগুলির প্রয়োজনীয়তা রয়েছে ... আগামীকাল গ্রাহককে অঞ্চল অনুসারে সমষ্টিগুলি দেখতে হবে, তারপরে তারা কর্মচারী, শহর, বা শিল্পের দ্বারা বা প্রকল্প বা সম্পর্কিত সত্তা সম্পর্কিত কোনও পাগল বৈশিষ্ট্যটি দেখতে চান। আপনি কি এই সমস্ত প্রাক-সমষ্টি হবে? যদি তা হয়, তবে এখন আপনি একটি ওএলএপ ইঞ্জিন তৈরি করছেন ... এছাড়াও, এই সমষ্টিগুলি কি ডোমেনের প্রজেক্ট অবজেক্টে সঞ্চিত? আপনি যখন ডেটা উপস্থাপন করবেন, আপনি কখন প্রাক হিসাবকৃত মান বনাম গণনা মান ব্যবহার করবেন। ইত্যাদি আপনি কি এই কাজটি একটি বাস্তব বিশ্বের অ্যাপে তৈরি করেছেন?
রিচার্ড

আমি এই পদ্ধতির প্রতি আগ্রহী কিন্তু এটি আমার মনে প্রচুর সমস্যা উপস্থাপন করে।
রিচার্ড

আমার উপার্জন বন্টন ব্যবস্থা চালু এবং চলমান রয়েছে, আমার সমস্যা ছিল এজেন্টদের সাব-নেটওয়ার্কগুলি (উত্তোলন, আমানত, জ্যাকপট সহ ..) সহ উপাত্ত দ্বারা উত্পন্ন ডেটার উপর ভিত্তি করে আয়ের বর্তমান অবস্থা প্রদর্শন করা। উপ-নেটওয়ার্কগুলি, তারা ক্রমাগত তাদের ভারসাম্য ব্যবহার করে , এটি নেটওয়ার্কের পিতার মুনাফাকে বাড়িয়ে দেয় / ডিক্রি করে earn প্রতি সোমবার আয়ের বিতরণ পর্যায়ক্রমে করা হয়, সমস্যাটি আসল সময়ে লাভের বিবর্তন দেখানো এবং ভার্চুয়াল আপডেট করা ছিল was সমস্ত নেটওয়ার্কের বাজেট।
marcocs

নেটওয়ার্কগুলিতে একত্রিতকরণ এড়াতে, এবং যখনই কোনও অনুরোধ করা হয় আসল সময়ে সমস্ত মানগুলি বিতরণ করার জন্য, নেটওয়ার্কগুলির উপার্জনকে স্বাভাবিক করার জন্য অস্থায়ী-স্থাপনার প্রক্রিয়াটি ধারাবাহিকভাবে কার্যকর করা হয় you আপনি যখন অনুরোধ করবেন প্রতিটি সময়, গণনা করা মানগুলি একত্রিত করে সংক্ষিপ্ত করা হয় অস্থায়ী স্থাপনার অন্তর্ভুক্ত নয় এমন মানগুলি (আমি কেবল সর্বশেষ আপডেট-আইটেমটি নিয়ে কাজ করি)। লেনদেনের সারণী (যা স্পষ্টতই এই অ্যাপ্লিকেশনটিতে বোঝা ভোগ করে), টেবিলের পার্টিশন সহ পরিচালনা করা হয়েছিল ।
marcocs

1

ক্যোয়ারির জন্য ক্যাশে ব্যবহার করুন, ক্যাচিংয়ের জন্য ডোমেন ব্যবহার করুন।

স্ট্যাকওভারফ্লোতে "শীর্ষ ব্যবহারকারী" নামে একটি বৈশিষ্ট্য রয়েছে। আপনি শীর্ষ ব্যবহারকারী পৃষ্ঠাগুলির বোতামে একটি লাইন পেতে পারেন, "কেবলমাত্র সম্প্রদায়ের-উইকির প্রশ্ন এবং উত্তরগুলি এই মোটের অন্তর্ভুক্ত করা হয়েছে ( প্রতিদিন আপডেট হয়েছে )"। এটি ডেটা ক্যাশেড হওয়ার ইঙ্গিত দেয়।

কিন্তু কেন?

পারফরম্যান্স ইস্যু জন্য। ডোমেন লজিক ফাঁস হওয়ার সাথে তাদের একই উদ্বেগ থাকতে পারে ("এক্ষেত্রে কেবলমাত্র অ-সম্প্রদায়ের-উইকির প্রশ্ন এবং উত্তরগুলি এই মোটের মধ্যে অন্তর্ভুক্ত করা হয়েছে")।

কিভাবে?

তারা কীভাবে এটি করেছে আমি সত্যিই জানি না, সুতরাং এখানে কেবল অনুমান করা যায় :)

প্রথমত, আমাদের লক্ষ্য প্রশ্ন / উত্তরগুলি সন্ধান করতে হবে। একটি শিডিংয়ের কাজটি কার্যকর হতে পারে, কেবল সমস্ত সম্ভাব্য লক্ষ্যমাত্রা নিয়ে আসে।

দ্বিতীয়ত, আসুন শুধুমাত্র একটি প্রশ্ন / উত্তর তাকান। এটি কি একটি সম্প্রদায়ের-উইকি? এটি কি 30 দিনের মধ্যে রয়েছে? এটি ডোমেন মডেলগুলির সাথে উত্তর দেওয়া বেশ সহজ। ভোট গণনা করুন এবং সন্তুষ্ট হলে ক্যাশে করুন।

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

ফলাফলগুলি আরও "রিয়েল টাইম" হওয়ার দরকার হলে কী হবে?

ইভেন্টগুলি সাহায্য করতে পারে। একটি নির্ধারিত টাস্কটি দিয়ে ক্যাশেটিকে ট্রিগার করার পরিবর্তে আমরা প্রক্রিয়াটিকে অনেকগুলি উপ-প্রক্রিয়াতে বিভক্ত করতে পারি। উদাহরণস্বরূপ, কেউ যখন হিপ্পোমের উত্তরে ভোট দেয়, আমরা হিপ্পুমের শীর্ষ ব্যবহারকারীদের ক্যাশে আপডেটটি ট্রিগার করে এমন একটি ইভেন্ট প্রকাশ করি। এই ক্ষেত্রে, আমরা প্রায়শই দ্রুত ছোট ছোট কাজগুলি দেখতে পাই।

সিকিউআরএস কি প্রয়োজনীয়?

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

সম্পর্কিত কিছু প্রশ্ন:
1. https://stackoverflow.com/questions/21152958/how-to-handle-summary-report-in-cqrs 2. https://stackoverflow.com/questions/19414951/how-to-use -rich ডোমেন--সঙ্গে-বৃহদায়তন-অপারেশন / 19416703 # 19416703

আশা করি এটা সাহায্য করবে :)


0

দাবি অস্বীকার:
আমি ডোমেন মডেলগুলির সাথে অ্যাপ্লিকেশনগুলিতে বেশ অনভিজ্ঞ।
আমি সমস্ত ধারণাগুলি বুঝতে পেরেছি এবং আমি ইতিমধ্যে দীর্ঘকাল ধরে ভাবছিলাম যে আমি যে অ্যাপ্লিকেশনগুলিতে কাজ করছি সেগুলিতে কীভাবে এই ধারণাগুলি প্রয়োগ করতে হবে (যা ডোমেন সমৃদ্ধ, তবে ওও এর প্রকৃত ডোমেন মডেল ইত্যাদি নেই)
এই প্রশ্নটি আমি অন্যতম মূল সমস্যাগুলির মুখোমুখি। এটি কীভাবে সমাধান করা যায় সে সম্পর্কে আমার ধারণা আছে তবে আমি যেমনটি বলেছি ... এটি কেবল একটি ধারণা যা আমি এনেছি।
আমি এখনও এটি বাস্তব প্রকল্পে বাস্তবায়ন করি নি, তবে এটির কাজ না করার কারণ আমি দেখতে পাচ্ছি না though


এখন আমি যে বিষয়টি পরিষ্কার করে দিয়েছি, আমি এখানে যা এলাম তা এখানে - আমি ব্যাখ্যা করার জন্য আপনার প্রথম উদাহরণটি (প্রকল্পের মেট্রিক) ব্যবহার করব :

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

আপনি এটি ডোমেন মডেলটিতে গণনা করতে এবং বাকী ডোমেন মডেলের সাথে এটি ডাটাবেসে সংরক্ষণ করতে পারেন।
সুতরাং Projectআপনার ডোমেনের মডেল বর্গ মত কিছু বৈশিষ্ট্য আছে হবে TotalBudget, EffortToDateইত্যাদি, এবং রয়েছে ডাটাবেস সারণি যেখানে আপনার ডোমেনের মডেল সংরক্ষিত হয় সেই নামের সাথে কলাম হতে হবে (একই টেবিল, বা একটি পৃথক টেবিল ... ফেলে না 'ব্যাপার না)

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

সুতরাং যখনই আপনার কোনও ধরণের প্রতিবেদনের প্রয়োজন হবে, সমস্ত প্রয়োজনীয় ডেটা ইতিমধ্যে সেখানে উপস্থিত রয়েছে (প্রাক-গণনা করা) এবং আপনি ঠিক এর মতো কিছু করতে পারেন:

select ProjectName, TotalBudget, EffortToDate from Projects where TotalBudget > X

ডোমেন মডেলটি সঞ্চিত আছে সেগুলি থেকে আপনি সরাসরি ডেটা পাবেন কিনা তা বিবেচ্য নয় বা আপনি যদি কোনওভাবে দ্বিতীয় ডাটাবেসে ডেটা গুদামে বা অন্য যে কোনও উপায়ে এক্সট্রাক্ট করেন:

  1. যদি আপনার রিপোর্টিং স্টোরটি আপনার প্রকৃত ডেটা স্টোর থেকে আলাদা হয় তবে আপনি "ডোমেন মডেল টেবিলগুলি" থেকে ডেটা অনুলিপি করতে পারেন
  2. আপনি যদি সরাসরি আপনার প্রকৃত ডেটা স্টোরটি অনুসন্ধান করেন তবে ডেটা ইতিমধ্যে রয়েছে এবং আপনাকে কোনও কিছুর গণনা করার দরকার নেই

উভয় ক্ষেত্রেই, গণনার জন্য ব্যবসায়ের যুক্তি ঠিক এক জায়গায়: ডোমেন মডেল।
আপনার অন্য কোথাও এটির দরকার নেই, সুতরাং এটির সদৃশ করার দরকার নেই।


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