ডেটাবেস ডিজাইনে অপরিহার্যতা পছন্দসই


26

জোশুয়া ব্লচের কার্যকর জাভার অন্যতম আইটেম একটি ধারণা যে ক্লাসগুলি যতটা সম্ভব সামান্য ঘটনার পরিবর্তনের অনুমতি দেবে এবং সম্ভবত এগুলি মোটেই না।

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

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

আমি সম্প্রতি যা কিছু পরীক্ষা করছিলাম তার একটি দৃ was় উদাহরণ। আমি যদি জানি যে পরে আমি অতিরিক্ত ডেটা সহ একটি রেকর্ড সংযোজন করতে পারি, তবে আমি এটি উপস্থাপন করতে অন্য একটি টেবিল তৈরি করব, নিম্নোক্ত দুটি টেবিল সংজ্ঞাগুলির মতো সাজানো:

create table myObj (id integer, ...other_data... not null);
create table myObjSuppliment (id integer, myObjId integer, ...more_data... not null);

আশাবাদী যে এই নামগুলি শব্দভাবাপন্ন নয়, কেবল ধারণাটি প্রদর্শন করার জন্য স্পষ্ট।

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


7
আমি মনে করি এটি কোনও সমস্যা ছাড়াই সমাধান ... আপনি আপডেট হওয়া উচিত, আপডেটগুলি এড়াতে বিস্তৃত অভিযোজন তৈরির পরিবর্তে upd
ফস্কো

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

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

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

@ ফসকো কিছু সিস্টেমের কখনই ডেটা মুছে ফেলার প্রয়োজন হয় না (ব্যবহার সহ UPDATE)। ডাক্তারের মেডিকেল রেকর্ডের মতো।
ইজকাটা

উত্তর:


25

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

অপরিবর্তনীয় প্রতিকারগুলি প্রথমে মেমোরিতে নতুন স্থানে সমস্ত পরিবর্তন লিখে এবং তারপরে চূড়ান্ত কার্যনির্বাহী পদক্ষেপ হিসাবে পয়েন্টারটিকে নতুন অবজেক্টে পুনর্লিখনের পদক্ষেপ হিসাবে কাজ করে - যা সমস্ত সিপিইউতে পারমাণবিক অপারেশন.

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

এটি আরও নতুন স্বয়ংক্রিয় এবং আরও নমনীয় বাদে নতুন টেবিলগুলি তৈরি করার আপনার ধারণার মতো ঠিক একই জিনিস।

সুতরাং আপনার প্রশ্নের উত্তর দেওয়ার জন্য, হ্যাঁ, ডেটাবেজে অপরিবর্তনশীলতা ভাল, তবে না, আপনাকে কেবল সে উদ্দেশ্যে পৃথক সারণী তৈরি করার দরকার নেই; আপনার ডাটাবেস সিস্টেমের জন্য যে পরিমাণে পারমাণবিক লেনদেনের আদেশ পাওয়া যায় আপনি তা ব্যবহার করতে পারেন।


উত্তর করার জন্য ধন্যবাদ. এই দৃষ্টিকোণটি আমার অনুধাবনকারীটি ঠিক বুঝতে পেরেছিল যে আমার অন্তর্নিহিততা বিভ্রান্তিমূলকভাবে একটি একক প্যাটার্নে কয়েকটি বিভিন্ন ধারণা একত্রিত করার চেষ্টা করছে।
এড ক্যারেল

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

24

অপরিবর্তনীয়তা থেকে আপনি কী কী সুবিধা অর্জন করবেন বলে এটি নির্ভর করে on রি মিয়াসাকের উত্তর একটিকে সম্বোধন করেছে (অবৈধ মধ্যবর্তী অবস্থার পরিহার), তবে এখানে অন্যটি।

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

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

আপনি যখনই "ডেটাবেস ডিজাইনে অপরিবর্তনীয়তা" বলবেন তখন আমার মনে এটাই আসে।


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

6
@ মাইনমা: সম্ভবত আমার পরিবর্তে কেবল "টেম্পোরাল ডেটাবেসগুলি সম্পর্কে পড়ুন" বলা উচিত ছিল। আমার উদাহরণটি টেম্পোরাল ডেটা কী তা স্কেচ হিসাবে লক্ষ্য করা হয়েছিল; আমি দাবি করি না যে এটি ডেটা পরিবর্তন করার উপস্থাপনের সর্বদা সেরা উপায়। অন্যদিকে, যদিও অস্থায়ী তথ্যের জন্য সমর্থনটি এখন খুব খারাপ, তবুও আমি আশা করি যে পরিবর্তনগুলি লগের "দ্বিতীয় শ্রেণির" উপস্থাপনাগুলিতে এটি প্রকাশের পরিবর্তে, ডাটাবেসে টেম্পোরাল ডেটাগুলিকে সংযুক্ত করার দিকে ঝোঁক থাকবে be
রায়ান কুলিপার

আমরা যদি অডিট টেবিলের পরিবর্তনের ইতিহাস বজায় রাখি (উদাহরণস্বরূপ স্প্রিং বুট এবং হাইবারনেট এই সক্ষমতাটি উপস্থাপন করে)?
মোহাম্মদ নাজার

14

আপনি যদি কোনও ডাটাবেসে অপরিবর্তনীয়তা থেকে প্রাপ্ত সুবিধাগুলি পেতে আগ্রহী হন বা কমপক্ষে একটি ডাটাবেস যা অপরিবর্তনীয়তার মায়া দেয়, ডেটামিক পরীক্ষা করুন।

ডেটামিক হ'ল রিচ হিকির উদ্ভাবিত একটি ডাটাবেস যা থিঙ্ক রিলেভেন্সের সাথে জোটে রয়েছে, প্রচুর ভিডিও রয়েছে যেখানে তারা আর্কিটেকচার, লক্ষ্যগুলি, ডেটা মডেল ব্যাখ্যা করে। অনুসন্ধান তথ্যসমূহ, বিশেষত একটিতে ডেটামিক, মান হিসাবে ডাটাবেস শিরোনাম । সংঘাতের মধ্যে আপনি রিচ হিকির মূল বক্তব্যটি ইউরোপ্লোজুরে সম্মেলনে ২০১২ সালে উপহার পেতে পারেন conf

Vimeo.com/53162418 এ একটি আলোচনা রয়েছে যা আরও উন্নয়নমুখী।

স্টুয়ার্ট হ্যালোয়ে থেকে এখানে অন্য একটি এখানে রয়েছে .pscdn.net/008/00102/videoplatform/kv/121105techconf_close.html

  • ডেটামিক হ'ল 5-টি-টিপলস [E, A, V, T, O] এ ড্যাটুমস নামে তথ্যের একটি ডাটাবেস
    • E সত্তা আইডি
    • সত্তার একটি বৈশিষ্ট্যর নাম (নেমস্পেস থাকতে পারে)
    • ভী গুণাবলীর মান
    • টি লেনদেনের আইডি, এটির সাথে আপনার সময়ের ধারণা রয়েছে।
    • হে দৃ One়তার একটি পরিচালনা (বর্তমান বা বর্তমান মান), প্রত্যাখ্যান (অতীতের মান);
  • এর নিজস্ব ডেটা ফর্ম্যাট ব্যবহার করে, এটি EDN (এক্সটেনসিবল ডেটা নোটেশন) বলে
  • লেনদেনগুলি এসিডি হয়
  • ডেটাগলজকে ক্যোয়ারী ভাষা হিসাবে ব্যবহার করে, যা এসকিউএল + পুনরাবৃত্ত অনুসন্ধানগুলি হিসাবে ঘোষিত। প্রশ্নগুলি ডেটা স্ট্রাকচার সহ উপস্থাপিত হয় এবং আপনার jvm ভাষার সাথে প্রসারিত হয়, আপনার ক্লোজার ব্যবহার করার দরকার নেই।
  • ডাটাবেসটি 3 টি পৃথক পরিষেবাগুলিতে (প্রক্রিয়া, মেশিন) ডিকপলড হয়:
    • লেনদেন
    • সংগ্রহস্থল
    • অনুসন্ধান ইঞ্জিন।
  • আপনি পৃথকভাবে প্রতিটি পরিষেবা স্কেল করতে পারেন।
  • এটি ওপেন সোর্স নয়, তবে ডেটামিকের ফ্রি (বিয়ারের মতো) সংস্করণ রয়েছে।
  • আপনি একটি নমনীয় স্কিমা বর্ণনা করতে পারেন।
    • বৈশিষ্ট্যগুলির সেটটি উন্মুক্ত
    • যে কোনও সময় নতুন বৈশিষ্ট্য যুক্ত করুন
    • সংজ্ঞা বা কোয়েরিতে কোনও অনড়তা নেই

এখন যেহেতু তথ্যটি তথ্য হিসাবে সত্য হিসাবে সংরক্ষণ করা হয়েছে:

  • আপনি যা করেন তা হ'ল তথ্য-উপাত্তগুলিতে তথ্য যুক্ত করা হয়, আপনি কখনই এগুলি মুছবেন না (আইনের দ্বারা প্রয়োজনীয় হওয়া ব্যতীত)
  • আপনি চিরকালের জন্য সবকিছু ক্যাশে করতে পারেন। ক্যোয়ারী ইঞ্জিন, মেমরি ডাটাবেস হিসাবে অ্যাপ্লিকেশন সার্ভারে বাস করে (jvm ভাষাগুলির জন্য নন- jvm ভাষাগুলি একটি REST API এর মাধ্যমে অ্যাক্সেস পেয়েছে।)
  • আপনি অতীতে সময় হিসাবে জিজ্ঞাসা করতে পারেন।

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

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

আপনি ডেটোমিককে এসিডি নোএসকিউএল হিসাবে ভাবতে পারেন, ডেটুমের সাহায্যে আপনি টেবিল বা নথি বা কেভি-স্টোর বা গ্রাফ মডেল করতে পারেন।


7

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


সিকিউআরএস এবং ইভেন্ট সোর্সিং আজকাল হাইলাইটে আসছে।
গুলশান

6

ডেটা গুদামজাত বিশ্বে "আস্তে আস্তে পরিবর্তনশীল মাত্রা" এবং অন্যান্য ডোমেনগুলির "টেম্পোরাল" বা "দ্বি-টেম্পোরাল" সারণীগুলির সাথে এটি খুব ঘনিষ্ঠ সম্পর্ক বহন করে।

প্রাথমিক নির্মাণটি হ'ল:

  1. সর্বদা প্রাথমিক কী হিসাবে উত্পন্ন সরোগেট কী ব্যবহার করুন।
  2. আপনি যেটি বর্ণনা করছেন তার অনন্য সনাক্তকারী "যৌক্তিক কী" হয়ে যায়।
  3. প্রতিটি সারিতে কমপক্ষে একটি "ValidFrom" টাইমস্ট্যাম্প এবং allyচ্ছিকভাবে একটি "ValidTo" টাইমস্ট্যাম্প এবং আরও বেশি optionচ্ছিকভাবে "সর্বশেষ সংস্করণ" পতাকা থাকা উচিত।
  4. একটি যৌক্তিক সত্তার "সৃষ্টি" তে আপনি বর্তমান টাইমস্ট্যাম্পের "বৈধ থেকে" একটি নতুন সারি সন্নিবেশ করান। Foreverচ্ছিক ValidTo "চিরতরে" (9999-12-31 23:59:59) এবং সর্বশেষ সংস্করণটিকে "সত্য" এ সেট করেছে।
  5. যৌক্তিক সত্তার পরবর্তী আপডেটে। আপনি উপরের মতো কমপক্ষে একটি নতুন সারি প্রবেশ করান। আপনার পূর্ববর্তী সংস্করণটির ভ্যালিডডোকে "এখন () - 1 সেকেন্ড" এবং সর্বশেষ সংস্করণটি "মিথ্যা" হিসাবে সামঞ্জস্য করতে হতে পারে
    1. যৌক্তিক মুছে ফেলার ক্ষেত্রে (এটি কেবলমাত্র ValidTo টাইমস্ট্যাম্পের সাথে কাজ করে!) আপনি বর্তমান সারিতে ValidTo পতাকাটি "এখন () -1 সেকেন্ডে সেট করেছেন।

এই স্কিমের সুবিধাগুলি হ'ল আপনি যে কোনও সময় আপনার যৌক্তিক সত্তার "রাষ্ট্র" পুনরায় তৈরি করতে পারেন, সময়ের সাথে সাথে আপনার সত্তার একটি ইতিহাস রয়েছে এবং আপনার "যৌক্তিক সত্তা" অত্যধিকভাবে ব্যবহৃত হলে আপনি বিতর্ককে হ্রাস করতে পারেন।

অসুবিধাগুলি হ'ল আপনি অনেক বেশি ডেটা সঞ্চয় করেন এবং আপনার আরও সূচী বজায় রাখতে হবে (খুব কমপক্ষে লজিকাল কী + ভ্যালিডফ্রোম + ভ্যালিডটোতে)। লজিকাল কী + সর্বশেষ সংস্করণে একটি সূচক বেশিরভাগ প্রশ্নের তীব্র গতি বাড়িয়ে তোলে। এটি আপনার এসকিউএলকে জটিল করে তোলে!

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


1

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


0

দাবি অস্বীকার: আমি ডিবি: পি তে বেশ নতুন by

বলা হচ্ছে, উপগ্রহ উপাত্তের এই পদ্ধতির তাত্ক্ষণিক প্রভাব কার্যকারিতা:

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

আপনার প্রয়োজনীয়তার উপর নির্ভর করে, আপনি হয় এটি স্বাগত জানাতে পারেন, না, তবে এটি অবশ্যই বিবেচনার বিষয়।


-1

আপনার স্কিমকে কীভাবে "অপরিবর্তনীয়" বলা যেতে পারে তা আমি দেখছি না।

পরিপূরক সারণীতে সঞ্চিত একটি মান পরিবর্তন হলে কী ঘটে? দেখে মনে হচ্ছে আপনার এই টেবিলে একটি আপডেট সম্পাদন করা প্রয়োজন।

কোনও ডাটাবেসকে সত্যিকারের অপরিবর্তনীয় হওয়ার জন্য এটি কেবল "INSERTS" দ্বারা বজায় রাখা প্রয়োজন। এর জন্য আপনার "বর্তমান" সারিটি চিহ্নিত করার কিছু পদ্ধতি প্রয়োজন। এটি প্রায় সর্বদা ভয়াবহভাবে অক্ষম হয়ে পড়ে। হয় আপনি পূর্ববর্তী সমস্ত অপরিবর্তিত মানগুলি অনুলিপি করতে হবে বা আপনি জিজ্ঞাসা করার সময় বেশ কয়েকটি রেকর্ড থেকে বর্তমান অবস্থা একত্রিত করতে হবে। বর্তমান সারিটির নির্বাচনের জন্য সাধারণত কিছু মারাত্মক অগোছালো এসকিউএল দরকার হয় ( where updTime = (SELECT max(updTime) from myTab where id = ?)।

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

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


একক রেকর্ডের জন্য, WHERE id = {} ORDER BY updTime DESC LIMIT 1সাধারণত খুব অদক্ষ হয় না।
ইজকাটা

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