दिलचस्प पोस्ट
.NET कंसोल अनुप्रयोग बाहर निकलें ईवेंट सभी जेवीएम ध्वज प्रिंट करें नियंत्रकों के साथ एकाधिक FXML, वस्तु साझा करें यह कोड NSString को समान मानकर क्यों नहीं मानता है? अधिकतम आईडी के साथ तत्व प्राप्त करने के लिए mongodb में findOne का उपयोग करना गतिशील रूप से JavaScript का उपयोग करके शैली-वेबकिट-ट्रांसफॉर्म को सेट कैसे करें? एंड्रॉइड: सूची निर्माण पर सूची आइटम को अक्षम कैसे करें सी # में, क्या सूची <चाइल्ड> की सूची <पीअर> को डालना संभव है? रेजर के साथ MVC4 का उपयोग करते हुए जावास्क्रिप्ट चर को कैसे सेट करें स्प्रिंग बैच में मद रीडर से नौकरी पैरामीटर तक पहुंच कैसे प्राप्त करें? यह निर्धारित करने के लिए कि क्या सीएसएस लोड हो चुका है? डिव पृष्ठभूमि कोडर बदलने के लिए जावास्क्रिप्ट का उपयोग कैसे करें WAMP SMTP लोकलहोस्ट का उपयोग कर मेल भेजें अजगर डिक्ट को डीजेंगो क्वेरी डेट कैसे बदलूं? Matlab – पीसीए विश्लेषण और बहु ​​आयामी डेटा के पुनर्निर्माण

इकाई विशेषता मूल्य डाटाबेस बनाम सख्त संबंधपरक मॉडल ईकॉमर्स

यह कहना सुरक्षित है कि ईएवी / सीआर डेटाबेस मॉडल खराब है। ने कहा कि,

प्रश्न: ई-कॉमर्स उत्पादों का वर्णन करने वाले गुणों की "कक्षाएं" से निपटने के लिए कौन से डाटाबेस मॉडल, तकनीक या पैटर्न का उपयोग किया जाना चाहिए जो रन-टाइम में बदला जा सकता है?

एक अच्छा ई-कॉमर्स डाटाबेस में, आप विकल्पों की कक्षाएं स्टोर करेंगे (जैसे टीवी रिज़ॉल्यूशन तब प्रत्येक टीवी के लिए एक रिज़ॉल्यूशन होता है, लेकिन अगला उत्पाद टीवी नहीं हो सकता है और "टीवी रिज़ॉल्यूशन" नहीं है)। आप उन्हें कैसे स्टोर करते हैं, कुशलता से खोजते हैं, और अपने उपयोगकर्ताओं को उनके उत्पादों का वर्णन चर क्षेत्रों के साथ उत्पाद प्रकार को सेटअप करने की अनुमति देते हैं? यदि खोज इंजन को पता चलता है कि ग्राहक आमतौर पर कंसोल की गहराई के आधार पर टीवी की खोज करते हैं, तो आप अपने क्षेत्रों में कंसोल की गहराई जोड़ सकते हैं, फिर रन टीवी पर प्रत्येक टीवी उत्पाद प्रकार के लिए एक गहराई जोड़ सकते हैं

अच्छे ई-कॉमर्स ऐप के बीच एक अच्छी आम सुविधा है जहां वे उत्पादों का एक सेट दिखाते हैं, फिर "ड्रिल डाउन" पक्ष मेनू होते हैं, जहां आप "शीर्ष पर एक टीवी रिजोल्यूशन" देख सकते हैं और शीर्ष पांच सबसे आम टीवी संकल्प पाया सेट आप एक पर क्लिक करते हैं और यह केवल उस प्रस्ताव के टीवी दिखाता है, जिससे आप किनारे मेनू पर अन्य श्रेणियों का चयन करके आगे बढ़ सकते हैं। ये विकल्प रन टाइम पर जोड़े गए डायनामिक उत्पाद विशेषताओं होंगे।

आगे की चर्चा:

इतनी लंबी कहानी कम है, क्या कोई इंटरनेट या मॉडल वर्णन पर कोई लिंक है जो "अकादमिक" द्वारा निम्न सेटअप को ठीक कर सकता है? श्रेणी तालिका का सुझाव देने के लिए मैं नोएल केनेडी को धन्यवाद देता हूं, लेकिन इसकी आवश्यकता उस से अधिक हो सकती है। मैं इसे नीचे एक अलग तरीका बताता हूं, महत्व को उजागर करने की कोशिश कर रहा हूं। मुझे समस्या का समाधान करने के लिए दृष्टिकोण सुधार की आवश्यकता हो सकती है, या मुझे ईएवी / सीआर में गहराई तक जाने की आवश्यकता हो सकती है

ईएवी / सीआर मॉडल के लिए सकारात्मक प्रतिक्रिया पसंद करें मेरे साथी डेवलपर्स सभी का कहना है कि जेफरी केम्प ने नीचे क्या छुएं: "नई संस्थाओं को एक पेशेवर द्वारा तैयार किया जाना चाहिए और डिज़ाइन किया जाना चाहिए" (संदर्भ के बाहर, उसकी प्रतिक्रिया नीचे पढ़ें) यह समस्या है:

  • इकाइयां साप्ताहिक विशेषताओं को जोड़ और हटा दें
    (खोज कीवर्ड भविष्य की विशेषताओं को निर्देश देते हैं)
  • नई संस्थाएं साप्ताहिक पहुंचेंगी
    (उत्पादों को भागों से इकट्ठा किया जाता है)
  • पुरानी संस्थाएं साप्ताहिक चले जाते हैं
    (संग्रहीत, कम लोकप्रिय, मौसमी)

ग्राहक दो कारणों से उत्पादों में विशेषताओं को जोड़ना चाहता है:

  • जैसे उत्पादों के बीच विभाग / कीवर्ड खोज / तुलना चार्ट
  • चेकआउट से पहले उपभोक्ता उत्पाद विन्यास

विशेषताओं का महत्व होना चाहिए, न कि केवल एक कीवर्ड खोज। अगर वे सभी केक की तुलना करना चाहते हैं जो "व्हीप्ड क्रीम फ्रॉस्टिंग" है, तो वे केक पर क्लिक कर सकते हैं, जन्मदिन की थीम पर क्लिक कर सकते हैं, व्हीप्ड क्रीम फ्राइंग पर क्लिक कर सकते हैं, फिर उन सभी केक की जांच करें, जिनके बारे में पता है कि वे सभी क्रीम फिसलने वाले व्हीपी हैं। यह केक के लिए विशिष्ट नहीं है, सिर्फ एक उदाहरण है।

Solutions Collecting From Web of "इकाई विशेषता मूल्य डाटाबेस बनाम सख्त संबंधपरक मॉडल ईकॉमर्स"

मुझे लगता है कि कुछ सामान्य पेशेवरों और विपक्ष हैं, ऐसे हालात हैं जहां एक दूसरे से बेहतर है:

विकल्प 1, ईएवी मॉडल:

  • प्रो: सरल अनुप्रयोग डिजाइन और विकसित करने के लिए कम समय
  • प्रो: नई संस्थाएं जोड़ना आसान (उपयोगकर्ताओं द्वारा भी जोड़ा जा सकता है?)
  • प्रो: "सामान्य" इंटरफ़ेस घटक
  • कॉन: सरल डेटा प्रकार को मान्य करने के लिए आवश्यक जटिल कोड
  • कॉन: सरल रिपोर्ट के लिए बहुत जटिल एसक्यूएल
  • कॉन: जटिल रिपोर्ट लगभग असंभव हो सकती हैं
  • Con: बड़े डेटा सेट के लिए खराब प्रदर्शन

विकल्प 2, प्रत्येक इकाई अलग से मॉडलिंग:

  • Con: आवश्यकताओं और डिजाइन को इकट्ठा करने के लिए अधिक समय की आवश्यकता है
  • कॉन: नई संस्थाओं को एक पेशेवर द्वारा तैयार और डिजाइन किया जाना चाहिए
  • Con: प्रत्येक इकाई के लिए कस्टम इंटरफ़ेस घटकों
  • प्रो: डेटा प्रकार की कमी और सत्यापन को लागू करने के लिए सरल
  • प्रो: एसक्यूएल लिखना आसान है, समझने में आसान और डिबग
  • प्रो: यहां तक ​​कि सबसे जटिल रिपोर्ट अपेक्षाकृत सरल हैं
  • प्रो: बड़े डेटा सेट के लिए सर्वश्रेष्ठ प्रदर्शन

विकल्प 3, संयोजन (मॉडल संस्थाएं "ठीक से", लेकिन कुछ / सभी इकाइयों के लिए कस्टम विशेषताओं के लिए "एक्सटेंशन" जोड़ें)

  • प्रो / कॉन: ऑप्शंस 1 की अपेक्षा आवश्यकताओं और डिज़ाइन को इकट्ठा करने के लिए अधिक समय की आवश्यकता होती है, लेकिन शायद विकल्प 2 *
  • कॉन: नई संस्थाओं को एक पेशेवर द्वारा तैयार और डिजाइन किया जाना चाहिए
  • प्रो: नई विशेषताओं को बाद में आसानी से जोड़ा जा सकता है
  • कॉन: सरल डेटा प्रकार को मान्य करने के लिए आवश्यक जटिल कोड (कस्टम विशेषताओं के लिए)
  • Con: कस्टम इंटरफ़ेस घटकों को अभी भी आवश्यक है, लेकिन कस्टम एट्रिब्यूट्स के लिए जेनेरिक इंटरफ़ेस घटकों संभव हो सकते हैं
  • Con: जैसे ही किसी भी कस्टम विशेषता को एक रिपोर्ट में शामिल किया जाता है, एसक्यूएल जटिल हो जाता है
  • कोना: आम तौर पर अच्छा प्रदर्शन, जब तक कि आपको कस्टम ऐट्रिब्यूट्स द्वारा खोज या रिपोर्ट करने की ज़रूरत न हो

* मुझे यकीन नहीं है कि विकल्प 3 अनिवार्य रूप से डिजाइन चरण में किसी भी समय बचाएगा।

व्यक्तिगत तौर पर मैं विकल्प 2 की तरफ झुकाऊंगा, और जहां भी संभव हो वहां ईएवी से बचें हालांकि, कुछ स्थितियों के लिए उपयोगकर्ताओं को लचीलापन की आवश्यकता होती है जो ईएवी के साथ आती है; लेकिन यह एक महान लागत के साथ आता है

यह कहना सुरक्षित है कि ईएवी / सीआर डेटाबेस मॉडल खराब है।

नहीं यह नहीं। यह बस है कि वे संबंधपरक डेटाबेस का एक अक्षम उपयोग हैं। एक शुद्ध कुंजी / मूल्य की दुकान इस मॉडल के साथ बहुत अच्छा काम करता है

अब, अपने वास्तविक प्रश्न: विभिन्न विशेषताओं को कैसे स्टोर करें और उन्हें खोज योग्य रखें?

बस ईएवी का उपयोग करें आपके मामले में यह एक अतिरिक्त तालिका होगी। यह दोनों विशेषता नाम और मान पर सूचकांक, अधिकांश आरडीबीएम उपसर्ग-संपीड़न का उपयोग विशेषता नाम दोहराव पर करेंगे, जिससे यह वास्तव में तेज और कॉम्पैक्ट हो।

ईएवी / सीआर बदसूरत हो जाता है जब आप इसे 'असली' क्षेत्रों को बदलने के लिए उपयोग करते हैं हर उपकरण के साथ, यह 'बुरा' है, और यह एक खराब छवि देता है।

 // इस बिंदु पर, मैं आपको Magento / Adobe PSD प्रारूप के बारे में बात करने के लिए एक क्षण लेना चाहता हूं।
 // Magento / PSD एक अच्छा ईकॉमर्स मंच / प्रारूप नहीं है ।  Magento / PSD भी एक बुरा ईकॉमर्स मंच / प्रारूप नहीं है  इसे कॉल करना ऐसा होगा
 // अन्य खराब ईकॉमर्स प्लेटफार्मों / अपमानों का अपमान, जैसे ज़ेनकार्ट या ओसकामर  नहीं, Magento / PSD एक अस्थिर ईकॉमर्स मंच / प्रारूप है ।  बीत रहा है
 // कई हफ्तों के लिए इस कोड पर काम किया है, Magento / PSD के लिए मेरा नफरत एक उग्र आग में बढ़ी है
 // जो दस लाख सूर्यों के भयंकर जुनून के साथ जलता है

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' 

एक आदेश के लिए पता पते की जानकारी, आलसी

सारांश: केवल Magento का उपयोग करें यदि:

  1. आपको बड़े बोरों के पैसे दिए जा रहे हैं
  2. तुम्हे अवश्य करना चाहिए
  3. दर्द का आनंद लें

मुझे आश्चर्य है कि कोई भी नोड SQL डेटाबेस नहीं है

मैंने कभी भी उत्पादन संदर्भ में नोएसक्यूएल का अभ्यास नहीं किया है (बस मोंगोडीबी का परीक्षण किया और प्रभावित हुआ) परन्तु नोएसकुल की पूरी बात एक ही "दस्तावेज़" में अलग-अलग विशेषताओं के साथ आइटम को सहेजने में सक्षम है।

जहां एक ईटीएल प्रकार के आवेदन के रूप में प्रदर्शन एक प्रमुख आवश्यकता नहीं है, ईएवी का एक और विशिष्ट लाभ है: अंतर बचाता है

मैंने कई अनुप्रयोगों को लागू किया है जहां एक अति-आर्चिंग आवश्यकता एक डोमेन ऑब्जेक्ट के इतिहास को अपने पहले "संस्करण" से वर्तमान स्थिति तक देखने की क्षमता थी। यदि उस डोमेन ऑब्जेक्ट में बड़ी संख्या में गुण हैं, तो इसका मतलब है कि प्रत्येक परिवर्तन की आवश्यकता है कि इसके अनुरूप तालिका में एक नई पंक्ति डाली जाए (एक अद्यतन नहीं क्योंकि इतिहास खो जाएगा, लेकिन एक डालने)। मान लीजिए कि यह डोमेन ऑब्जेक्ट एक व्यक्ति है, और मेरे पास 500k व्यक्ति हैं, जिनके पास जीवन के चक्र में कई विशेषताओं के लिए 100 + औसत परिवर्तन हैं। युगल इस तथ्य के साथ कि दुर्लभ ही ऐसा आवेदन है जिसमें केवल 1 प्रमुख डोमेन ऑब्जेक्ट है और आप जल्दी से मान लेंगे कि डेटाबेस का आकार नियंत्रण से बाहर निकल जाएगा।

एक आसान समाधान केवल बार-बार बेमानी जानकारी सहेजने के बजाय प्रमुख डोमेन ऑब्जेक्ट्स में केवल अंतर परिवर्तन को सहेजना है।

नए मॉडल की जरूरतों को प्रतिबिंबित करने के लिए सभी मॉडल समय के साथ बदलते हैं। अवधि। ईएवी का प्रयोग करना हमारे बॉक्स में उपयोग करने के लिए उपकरण में से एक है; लेकिन इसे अपने आप को "बुरा" के रूप में कभी भी वर्गीकृत नहीं किया जाना चाहिए।

मैं एक ही मुद्दे के साथ संघर्ष कर रहा हूँ दो मौजूदा ईकॉमर्स समाधानों पर निम्नलिखित चर्चाओं की जांच करना दिलचस्प हो सकता है: Magento (EAV) और जूमला (नियमित संबंधपरक संरचना): https://forum.virtuemart.net/index.php?topic=58686.0

ऐसा लगता है, कि Magento के ईएवी प्रदर्शन एक असली showstopper है

यही कारण है कि मैं सामान्यीकृत संरचना की तरफ झुका रहा हूँ लचीलेपन की कमी पर काबू पाने के लिए मैं भविष्य में कुछ अलग डेटा डिक्शनरी (XML या अलग डीबी तालिकाओं) को संपादित करने के बारे में सोच रहा हूं, जो कि संपादित किया जा सकता है, और उस पर आधारित, नए एट्रिब्यूट्स सेट के साथ उत्पाद श्रेणियों को प्रदर्शित करने और उनकी तुलना करने के लिए आवेदन कोड होगा एसक्यूएल स्क्रिप्ट्स के साथ उत्पन्न हुआ

इस तरह की वास्तुकला इस मामले में sweetspot लगता है – एक ही समय में लचीला और प्रदर्शनकारी।

समस्या लाइव वातावरण में वैकल्पिक तालिका का लगातार उपयोग हो सकती है। मैं पोस्टग्रेज़ का उपयोग कर रहा हूं, इसलिए इसकी एमवीसीसी और ट्रांसेक्शन डीडीएल उम्मीद है कि दर्द को कम किया जाएगा।

मैं अभी भी ईएवी के लिए न्यूनतम-सार्थक परमाणु स्तर पर मॉडलिंग के लिए वोट देता हूं। मानदंडों, तकनीकों और अनुप्रयोगों को, जो कुछ विशिष्ट उपयोगकर्ता समुदाय की ओर गियर करता है, सामग्री मॉडल तय करने के लिए, विशेषताओं, अनाज आदि की दोहराव की आवश्यकता है।

यदि यह उत्पाद कैटलॉग विशेषताओं के बारे में है और इसलिए उन विशेषताओं के लिए सत्यापन आवश्यकताएँ सीमित हैं, तो ईएवी के लिए केवल वास्तविक नकारात्मकता क्वेरी प्रदर्शन है और यहां तक ​​कि यह केवल एक समस्या है जब आपकी क्वेरी विशेषताओं के साथ कई "चीजों" (उत्पादों) से संबंधित होती है, क्वेरी के लिए प्रदर्शन "आईडी 234 के साथ उत्पाद के लिए सभी विशेषताओं मुझे दे" जबकि इष्टतम अभी भी बहुत तेज नहीं है

एक समाधान एसक्यूएल डाटाबेस / ईएवी मॉडल का उपयोग केवल उत्पाद सूची के व्यवस्थापक / संपादन पक्ष के लिए करना है और ऐसी कुछ प्रक्रिया है, जो उत्पादों को कुछ ऐसे खोजती है जो इसे खोजने योग्य बनाता है। चूंकि आप पहले से ही गुण हैं और इसलिए यह संभावना नहीं है कि आप faceting चाहते हैं, यह कुछ Solr या ElasticSearch हो सकता है यह दृष्टिकोण ईएवी मॉडल को मूल रूप से सभी डाउनसाइड्स से बचा जाता है और अतिरिक्त जटिलता अपडेट पर JSON को एक पूर्ण उत्पाद को सीरियल करने तक सीमित है।

ईएवी में बहुत कमियां हैं:

  1. समय के साथ प्रदर्शन में गिरावट एक बार जब आवेदन में डेटा की मात्रा निश्चित आकार से बढ़ती है, तो उस डेटा की पुनर्प्राप्ति और हेरफेर कम और कम कुशल बनने की संभावना है।
  2. SQL क्वेरीज़ बहुत जटिल हैं और लिखना कठिन हैं
  3. डेटा इंटीग्रिटी समस्याएं आप आवश्यक सभी क्षेत्रों के लिए विदेशी कुंजी को परिभाषित नहीं कर सकते।
  4. आपको अपने मेटाडेटा को परिभाषित और बनाए रखना होगा

मेरे पास थोड़ा अलग समस्या है: विरल मूल्यों के साथ कई विशेषताओं के बजाय (जो संभवत: ईएवी का उपयोग करने का एक अच्छा कारण है), मैं एक स्प्रेडशीट की तरह कुछ और स्टोर करना चाहता हूं। शीट में कॉलम बदल सकते हैं, लेकिन एक शीट के भीतर सभी कोशिकाओं में डेटा (विरल नहीं) होगा।

मैंने दो डिज़ाइनों के बेंचमार्क के लिए एक परीक्षण का एक छोटा सा सेट बनाया: एक ईएवी का उपयोग कर, और दूसरा सेल डेटा को स्टोर करने के लिए पोस्टग्रेज़ एआरआरए का इस्तेमाल करता है

EAV यहां छवि विवरण दर्ज करें

सरणी यहां छवि विवरण दर्ज करें

दोनों स्कीमाओं को उचित कॉलम पर अनुक्रमित किया गया है, और अनुक्रमित योजनाकार द्वारा उपयोग किया जाता है।

यह सरणी-आधारित स्कीमा निकला, जो आवेषण और प्रश्नों दोनों के लिए तीव्रता का एक क्रम था । त्वरित परीक्षण से, ऐसा लग रहा था कि दोनों रैखिक रूप से स्केल किए गए थे। परीक्षण बहुत पूर्ण नहीं हैं, यद्यपि। सुझाव और कांटे का स्वागत करते हैं – वे एक एमआईटी लाइसेंस के तहत हैं