সত্তা বৈশিষ্ট্য মান ডাটাবেস বনাম কঠোর সম্পর্কিত সম্পর্কিত মডেল ইকমার্স


136

EAV / CR ডাটাবেস মডেলটি খারাপ তা বলা নিরাপদ । বলেছিল,

প্রশ্ন: রান-টাইমে পরিবর্তিত হতে পারে এমন ই-কমার্স পণ্য বর্ণনা করে এমন বৈশিষ্ট্যগুলির "শ্রেণি" মোকাবেলায় কোন ডাটাবেস মডেল, কৌশল বা প্যাটার্ন ব্যবহার করা উচিত?

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

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

পরবর্তী আলোচনা:

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

ইএভি / সিআর মডেলের ইতিবাচক প্রতিক্রিয়া পছন্দ করুন। আমার সহকর্মী বিকাশকারীরা সবাই নীচে জেফরি কেম্পকে যা স্পর্শ করেছেন তা বলে: "নতুন সত্তা অবশ্যই একজন পেশাদার দ্বারা মডেলিং এবং ডিজাইন করা উচিত" (প্রসঙ্গের বাইরে নেওয়া, নীচে তার প্রতিক্রিয়াটি পড়ুন)। সমস্যা হল:

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

গ্রাহক দুটি কারণে পণ্যগুলিতে গুণাবলী যুক্ত করতে চান:

  • বিভাগ / কীওয়ার্ড অনুসন্ধান / পণ্যগুলির মধ্যে তুলনা চার্ট
  • চেকআউট করার আগে ভোক্তা পণ্য কনফিগারেশন

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


বিদেশি কী নিজেই উল্লেখ করে আপনি কেবল একটি 'বিভাগ' টেবিল রাখতে পারবেন না কেন?
নোয়েল কেনেডি

29
EAV ডাটাবেস মডেলটি খারাপ তা বলা নিরাপদ বা নির্ভুল নয়, কারণ এটি কিছু অ্যাপ্লিকেশনের পক্ষে উপযুক্ত।
spencer7593

আপনি যদি সত্তা ফ্রেমওয়ার্ক 4 এর মতো পিতামাতার কাছ থেকে উত্তরাধিকার সূত্রে বিভিন্ন সম্পত্তি সহ বিভিন্ন অবজেক্টকে সজ্জিত করেন তবে? এটি কীভাবে এই অবজেক্টগুলিকে টিকিয়ে রাখে?
জ্যাকারি স্কট

1
EAV এর চরম সংস্করণের উপর ভিত্তি করে একটি সিস্টেমের সাথে একজন পরামর্শকের অভিজ্ঞতা সম্পর্কে এই দুর্দান্ত নিবন্ধটির দিকে ফিরে যেতে । এটি পড়ুন! সরল- টাল্ক.ওপিনিয়োন
জেফ্রি কেম্প

1
EAV একটি খুব কার্যক্ষম ডাটাবেস মডেল। আমি আপনার মতো একই সমস্যার জন্য কাজ করছি এবং সমাধানটি হ'ল ইএভি। : আমি পরের প্রবন্ধে সুপারিশ করবে sqlblog.com/blogs/aaron_bertrand/archive/2009/11/19/...
Sándor

উত্তর:


75

আমি ভাবতে পারি এমন কয়েকটি সাধারণ উপকারিতা রয়েছে, এমন পরিস্থিতি রয়েছে যেখানে একজনের চেয়ে অপরটি ভাল:

বিকল্প 1, EAV মডেল:

  • প্রো: একটি সাধারণ অ্যাপ্লিকেশন ডিজাইন এবং বিকাশের জন্য কম সময়
  • প্রো: নতুন সত্ত্বা যুক্ত করা সহজ (ব্যবহারকারীরাও যুক্ত হতে পারে?)
  • প্রো: "জেনেরিক" ইন্টারফেস উপাদান
  • কন: জটিল কোডগুলির জন্য সাধারণ ডেটা ধরণের বৈধতা পেতে প্রয়োজনীয়
  • কন: সাধারণ প্রতিবেদনের জন্য আরও জটিল এসকিউএল
  • কন: জটিল প্রতিবেদনগুলি প্রায় অসম্ভব হয়ে উঠতে পারে
  • কন: বড় ডেটা সেটগুলির জন্য দুর্বল পারফরম্যান্স

বিকল্প 2, প্রতিটি সত্তাকে আলাদাভাবে মডেলিং করা:

  • কন: প্রয়োজনীয়তা এবং নকশা সংগ্রহ করতে আরও সময় প্রয়োজন
  • কন: নতুন সত্তা অবশ্যই একজন পেশাদার দ্বারা মডেল এবং ডিজাইন করা উচিত
  • কন: প্রতিটি সত্তার জন্য কাস্টম ইন্টারফেস উপাদান
  • প্রো: ডেটা টাইপ সীমাবদ্ধতা এবং কার্যকর করার জন্য বৈধতা সহজ
  • প্রো: এসকিউএল লিখতে সহজ, বোঝা সহজ এবং ডিবাগ
  • প্রো: এমনকি সবচেয়ে জটিল প্রতিবেদনগুলি তুলনামূলকভাবে সহজ
  • প্রো: বড় ডেটা সেটগুলির জন্য সেরা পারফরম্যান্স

বিকল্প 3, সংমিশ্রণ (মডেল সত্তাগুলি "সঠিকভাবে", তবে কিছু / সমস্ত সত্তার জন্য কাস্টম বৈশিষ্ট্যের জন্য "এক্সটেনশনগুলি" যুক্ত করুন)

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

* আমি নিশ্চিত নই যে বিকল্প 3 ডিজাইনের পর্যায়ে অগত্যা যে কোনও সময় সাশ্রয় করবে।

ব্যক্তিগতভাবে আমি বিকল্প 2 এর দিকে ঝুঁকছি এবং যেখানেই সম্ভব EAV এড়াতে চাই। তবে, কিছু পরিস্থিতিতে ব্যবহারকারীদের নমনীয়তা প্রয়োজন যা EAV এর সাথে আসে; তবে এটি একটি দুর্দান্ত ব্যয় নিয়ে আসে।


আপনার যদি পাঠ্য মান 1-n এর সূচীগুলির সাথে একটি একক টেবিল থাকে, তবে সি # (র্যামে) ম্যাপে আপনার যা প্রয়োজন তা চান map এটি এখনও একটি EAV এর মতো কাজ করবে তবে "ম্যাচগুলি" ডোমেন মডেল হবে। সিরিয়ালাইজেশন এর মতো বাছাই করুন তবে আপনি সূচিবদ্ধ পাঠ্য ক্ষেত্রে SQL নির্বাচন ব্যবহার করতে পারেন। রেকর্ড প্রতি একাধিক নির্বাচন। সমস্ত "ব্যয়" র‍্যামে ঘটে।
জাচারি স্কট

1
@ জিম, এটি দুর্দান্ত বিকল্প হিসাবে 3 এর মত মনে হচ্ছে Each আপনি এক জায়গায় এক রেকর্ডের জন্য সমস্ত ডেটা রাখার পারফরম্যান্স সুবিধা পাবেন। এই কলামগুলির মেটাডেটা অন্য কোথাও সংরক্ষণ করা দরকার, তবে এখানেই ব্যয়টি কমে যায় Sure অবশ্যই, আমরা ম্যামে মেটাডেটাটি ক্যাশে করতে পারি, তবে অ্যাপ্লিকেশন কোডটিতে ডোমেনকে মডেল করে তোলার চেয়ে আরও বেশি ব্যয় হয়। অবশ্যই একটি পূর্ণাঙ্গ EAV মডেলের চেয়ে ভাল!
জেফ্রি কেম্প

1
+10000 দুর্দান্ত উত্তর। আজকাল লোকেরা ডাটাবেস ডিজাইন এবং প্রয়োজনীয় জমায়েতের বিষয়ে ঝুঁকি ফেলে। তারা বরং কোডের একশ গুণ বেশি লাইন লিখতে চাইবে, এটি একটি ভাল নকশা তৈরি করতে সময় নেয়।
তুলাইনস কর্ডোভা 17'14

EAV বিকল্প (1) এর তুলনায় আপনার রিলেশনাল অপশন (2) এর জন্য বেশি ডিজাইনের দরকার নেই যদি আপনি কেবল 1 বিকল্পের স্টাকচার সরবরাহ করছেন তবে এবং সেই কাঠামোগুলি বর্ণনার সাথে মেটাডেটা থেকে রিলেশনাল ইন্টারফেস জেনেরিক। এটি সমস্ত বিকল্পগুলি অপসারণ করে 2 কনস। তবে আপনি একমাত্র আসল কন: ভুলে গেছেন: ডিডিএল খুব স্লো ম্যানেজিং টেবিল হতে পারে।
ফিলিপ্সি

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

63

EAV / CR ডাটাবেস মডেলটি খারাপ তা বলা নিরাপদ।

না এইটা না. এটি কেবলমাত্র তারা সম্পর্কিত ডেটাবেসগুলির অদক্ষ ব্যবহার। একটি খাঁটি কী / মান স্টোর এই মডেলটির সাথে দুর্দান্ত কাজ করে।

এখন, আপনার আসল প্রশ্ন: কীভাবে বিভিন্ন বৈশিষ্ট্য সংরক্ষণ এবং সেগুলি অনুসন্ধানযোগ্য রাখবেন?

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

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


সুতরাং প্রশ্নটি হল আমার এক বিভাগের জন্য আমার 15 টি অতিরিক্ত ক্ষেত্র রয়েছে এবং ইভটি মডেলটিতে এটি 16 সংযুক্ত + প্রধান টেবিলের সমান হয় তাই পণ্য অনুসন্ধানে 16 টি বামে যোগ দেয় (এবং যেখানে কাস্টমার চাইলে 16 থাকে) 3-4 মিলিয়ন রেকর্ডে ( লোকেরা সেকেন্ড হ্যান্ড পণ্য বিক্রি করার জন্য একটি ওয়েবসাইট) তাই এটি পারফরমেন্স কম লাগে?
বাবাক ফাগিহিয়ান

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

তবে অবশ্যই, সেই নির্দিষ্ট সিস্টেমটি বর্তমানে একটি hstoreক্ষেত্রে পোর্ট করা হচ্ছে (আমরা পোস্টগ্রিসকিউএল ব্যবহার করার কারণগুলির মধ্যে একটি কারণ)
জাভিয়র

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

http://code.google.com/p/xee/source/browse/trunk/XeePhotoshopLoader.m?spec=svn28&r=11#107

অভ্যন্তরীণ মডেলগুলি একেবারে অবাস্তব, যেমন কেউ স্কিমাকে একটি বগল গেমের মধ্যে ফেলে, সিল করে এবং এটি একটি পেইন্ট শ্যাকারে রাখে ...

আসল বিশ্ব: আমি মিডওয়্যার সিদ্ধি অ্যাপ্লিকেশনটিতে কাজ করছি এবং ঠিকানার তথ্য পাওয়ার জন্য এখানে একটি প্রশ্ন রয়েছে।

CREATE OR REPLACE VIEW sales_flat_addresses AS
SELECT sales_order_entity.parent_id AS order_id, 
       sales_order_entity.entity_id, 
       CONCAT(CONCAT(UCASE(MID(sales_order_entity_varchar.value,1,1)),MID(sales_order_entity_varchar.value,2)), "Address") as type, 
       GROUP_CONCAT( 
         CONCAT( eav_attribute.attribute_code," ::::: ", sales_order_entity_varchar.value )
         ORDER BY sales_order_entity_varchar.value DESC
         SEPARATOR '!!!!!' 
       ) as data
  FROM sales_order_entity
       INNER JOIN sales_order_entity_varchar ON sales_order_entity_varchar.entity_id = sales_order_entity.entity_id
       INNER JOIN eav_attribute ON eav_attribute.attribute_id = sales_order_entity_varchar.attribute_id
   AND sales_order_entity.entity_type_id =12
 GROUP BY sales_order_entity.entity_id
 ORDER BY eav_attribute.attribute_code = 'address_type'

অলসভাবে একটি আদেশের জন্য ঠিকানাগুলি সম্পর্কিত তথ্যগুলি তথ্য acts

-

সংক্ষিপ্তসার: কেবলমাত্র ম্যাজেন্টো ব্যবহার করুন যদি:

  1. আপনাকে প্রচুর বস্তা টাকা দেওয়া হচ্ছে
  2. তোমাকে অবশ্যই
  3. ব্যথা উপভোগ করুন

এটি একটি পুরানো পোস্ট তবে আমি আশা করি 3 মাস আগে আমি যখন ক্লায়েন্টের জন্য ম্যাজেন্টো প্রকল্প শুরু করেছি তখন আমি এটি পেয়েছি। বগল / পেইন্ট-শেকার উপমা জন্য +1!
ট্রেভরেক

1
খুব ইন্টারেস্টেস্টিং, ম্যাজেন্টো দেখে মনে হচ্ছে এটি ই-কমার্স সিস্টেমের ক্ষেত্রে রাস্তার রাস্তা। সম্ভবত কেবল এটির বিপণন খুব ভাল
হের

1
রক্ষণাবেক্ষণ স্তরের কারণে ম্যাজেন্টো জনপ্রিয় নয়, তবে কাস্টমাইজ করার ক্ষমতা, যাকে আর্কিটেকচার পরিবর্তন বা কয়েকটি পরিবর্তন ছাড়াই যে কেউ নতুন বৈশিষ্ট্য প্রয়োগ করতে দেয় allowing এই বৈশিষ্ট্যটি একটি ব্যয় নিয়ে আসে।
দিয়েগো মেন্ডেস

Magento 2 থেকে দূরে থাকুন যদি আপনি উভয় ফাঃ জন্য উপরে ট্রিপল ব্যথা এবং আরো ব্যথা এড়াতে এবং হতে চান
TheBlackBenzKid

15

আমি আশ্চর্য হয়েছি কেউ নোএসকিউএল ডাটাবেস উল্লেখ করেনি।

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


এটি বিবেচনা করুন যে মঙ্গোডিবিতে লেখার জন্য ডাটাবেস-স্তরের লকিং প্রয়োজন , এবং একই সাথে উত্পাদনের ট্রাফিকের অর্থ কী।
বিল কারভিন

বিবেচনা করুন যে লক সময়কালটি মাইক্রোসেকেন্ডগুলির ক্রম হয়।
হ্যালো ওয়ার্ল্ড

12

ETL প্রকারের প্রয়োগের মতো যেখানে কর্মক্ষমতা একটি বড় প্রয়োজন হয় না, EAV এর আরও একটি স্বতন্ত্র সুবিধা রয়েছে: ডিফারেন্সিয়াল সেভ করে।

আমি বেশ কয়েকটি অ্যাপ্লিকেশন প্রয়োগ করেছি যেখানে ওভার-আর্চিংয়ের প্রয়োজনীয়তা ছিল কোনও ডোমেন অবজেক্টের ইতিহাসটিকে তার প্রথম "সংস্করণ" থেকে বর্তমান অবস্থানে দেখার ক্ষমতা। যদি সেই ডোমেন অবজেক্টটিতে প্রচুর পরিমাণে বৈশিষ্ট্য থাকে, তার অর্থ প্রতিটি পরিবর্তনের জন্য এটি সম্পর্কিত টেবিলের মধ্যে একটি নতুন সারি requiresোকানো প্রয়োজন (কোনও আপডেট নেই কারণ ইতিহাসটি হারিয়ে যাবে, তবে একটি সন্নিবেশ করানো হবে)। ধরা যাক এই ডোমেন অবজেক্টটি একজন ব্যক্তি এবং আমার ব্যক্তিত্বের জীবনচক্রের বিভিন্ন গুণাবলীতে গড়ে 100+ পরিবর্তনের সাথে ট্র্যাক করার জন্য আমার কাছে 500k ব্যক্তি রয়েছে। দম্পতি যে সত্য যে দুর্লভ একটি অ্যাপ্লিকেশন যা শুধুমাত্র 1 প্রধান ডোমেন অবজেক্ট আছে এবং আপনি দ্রুত সমীকরণ করতে পারেন যে ডাটাবেসের আকার দ্রুত নিয়ন্ত্রণের বাইরে চলে যাবে।

একটি সহজ সমাধান হ'ল বারবার অপ্রয়োজনীয় তথ্য সংরক্ষণ না করে কেবল প্রধান ডোমেন অবজেক্টগুলিতে ডিফারেনশিয়াল পরিবর্তনগুলি সংরক্ষণ করা।

সমস্ত ব্যবসায়ের নতুন ব্যবসায়ের প্রয়োজন প্রতিফলিত করতে সময়ের সাথে সাথে পরিবর্তন ঘটে। সময়কাল। EAV ব্যবহার করা আমাদের বাক্সে ব্যবহারের জন্য অন্যতম একটি সরঞ্জাম; তবে এটি কখনই স্বয়ংক্রিয়ভাবে "খারাপ" হিসাবে শ্রেণিবদ্ধ হওয়া উচিত নয়।


2
"EAV ব্যবহারের জন্য আমাদের বাক্সের অন্যতম একটি হাতিয়ার ব্যবহার করা; তবে এটি কখনই" খারাপ "হিসাবে শ্রেণিবদ্ধ হওয়া উচিত নয়" "
ক্যাচপপস

বিটিডব্লিউ, এটিকে এসসিডি (ধীরে ধীরে মাত্রা পরিবর্তন করা) বলা হয়। এছাড়াও দ্বিপক্ষীয় আবশ্যকীয়তা (প্রকার 4 এসসিডি একটি নির্দিষ্ট ক্ষেত্রে) এই সম্পত্তি আছে এমন বৈশিষ্ট্যের জন্য EAV স্কিমা জন্য কল করে। মনে রাখবেন, 99% নোএসকিউএল-এর কোনও নেটিভ যোগ দেয় না, সুতরাং আপনার যদি "লাইভ" দরকার হয় এই জাতীয় ডেটার সাথে যোগ দেয়, তবে ইএভি কেবল যাওয়ার একমাত্র উপায়।
কাউবার্ট

3

আমি একই ইস্যু নিয়ে লড়াই করছি। আপনার বিদ্যমান দুটি ইকমার্স সমাধানের জন্য নিম্নলিখিত আলোচনাটি পরীক্ষা করা আকর্ষণীয় হতে পারে: ম্যাজেন্টো (ইএভি) এবং জুমলা (নিয়মিত সম্পর্কযুক্ত কাঠামো): https://forum.virtuemart.net/index.php?topic=58686.0

দেখে মনে হচ্ছে, ম্যাজেন্টোর ইএভি পারফরম্যান্সটি একটি বাস্তব শোস্টোপার।

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

এই জাতীয় স্থাপত্যটি এক্ষেত্রে সুইটস্পট বলে মনে হয় - একই সময়ে নমনীয় এবং পারফরম্যান্ট।

সমস্যাটি লাইভ পরিবেশে ঘন ঘন ALTER TABLE ব্যবহার হতে পারে। আমি পোস্টগ্র্রেস ব্যবহার করছি, সুতরাং এর এমভিসিসি এবং লেনদেনের ডিডিএল আশা করি ব্যথাটি সহজ করবে।


2

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


2

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

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


2

EAV এর অনেকগুলি ত্রুটি রয়েছে:

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

1. এটি বেশিরভাগ রিলেশনাল ডাটাবেসের ক্ষেত্রেও সত্য; এই কারণেই শারডিং আবিষ্কার হয়েছিল। ২. ডেটা মডেলিং জটিল এবং প্রয়োগ করা কঠিন হতে পারে। আমি ওএলএপ কিউব স্কিমা পরিবর্তনের জন্য অপেক্ষা করে কয়েক সপ্তাহ কাটিয়েছি। ৩. ইতিমধ্যে বেশিরভাগই এখন সফ্টওয়্যারে সম্পন্ন হয়েছে any. যাইহোক যাইহোক একটি আপেক্ষিক স্কিমা মডেলিংয়ের সময় আপনাকে "ইআরউইন, এক্সেল এবং ভিজিওতে" এটি করতে হবে।
কাউবার্ট

1

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

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

EAV এখানে চিত্র বর্ণনা লিখুন

বিন্যাস এখানে চিত্র বর্ণনা লিখুন

উভয় স্কিমাতে যথাযথ কলামগুলিতে সূচি থাকে এবং সূচকগুলি পরিকল্পনাকারী দ্বারা ব্যবহৃত হয়।

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


আপনি কীভাবে অ্যারের মডেলটির সাথে শীট কলামগুলিতে (অর্থাত্ ভিউলআপ) যোগদান করবেন? আপনার নিজের অ্যারে মার্জ-সাজানোর ফাংশনটি লিখতে হবে না? অত্যন্ত সন্দেহজনকভাবে যদি আপনি ঘরটির মূল কী হিসাবে কোনও ঘরটির শিট_আইড + এক্স-কো-অর্ডিনেট + ওয়াই-কোঅর্ডিনেট ব্যবহার করেন তবে প্রাক-কম্পাইল করা মার্জ সাজ্টের মতোই ভাল হতে পারে doubt (এক্সেলকে অনুকরণ করতে, এক্স-কোঅর্ডিনেটের জন্য একটি সন্ধানের টেবিল তৈরি করতে যেখানে 0-18278 কলাম এ-জেডজেড (এক্সেল সর্বোচ্চ 16384) রয়েছে), তারপরে আপনি মানগুলি নির্বাচন করতে পারেন যেখানে শিট_আইডি = ইউইড এবং এক্স-কোন্ডার = 0 এবং y- স্থানাঙ্ক <1001
কর্নাল

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