2010-05-15 22 views
26

मैं वास्तव में 3-स्तरीय संरचना में फंस गया हूं। मैंने इंटरनेट सर्फ किया और दो टर्मिनोलॉजीज "डेटाबेस एब्स्ट्रक्शन लेयर" & "डेटा एक्सेस लेयर" पाया।डेटाबेस एब्स्ट्रक्शन लेयर और डेटा एक्सेस लेयर के बीच क्या अंतर है?

दोनों के बीच अंतर क्या हैं?

उत्तर

18

मेरी समझ यह है कि डेटा एक्सेस लेयर वास्तव में डेटाबेस को सार नहीं करता है, बल्कि डेटाबेस बनाता है संचालन और क्वेरी बिल्डिंग आसान है।

$Users->select('name,email,datejoined')->where('rank > 0')->limit(10); 

डाटा अमूर्त परतों आमतौर पर पूर्ण ORM के (वस्तु संबंधपरक उड़ा रहे हैं:

उदाहरण के लिए, डेटा का उपयोग परतों आम तौर पर बहुत SQL सिंटैक्स के समान एपीआई है कि अभी भी क्रम लिखने के लिए डेटाबेस की संरचना के ज्ञान की आवश्यकता होती है मैपर) जो सैद्धांतिक रूप से किसी भी अंतर्निहित डेटाबेस संरचना को समझने की आवश्यकता को रोकता है या SQL का कोई ज्ञान है। वाक्य रचना कुछ इस तरह हो सकता है:

Factory::find('Users', 10)->filter('rank > 0'); 

और सभी वस्तुओं को पूरी तरह से सभी क्षेत्रों, संभवतः किसी भी माता-पिता या बच्चे के साथ शामिल हो गए, यदि आप इसे इस तरह से सेट वस्तुओं की जगह ले सकता है।

हालांकि, यह अमूर्त मूल्य के साथ आता है। मैं व्यक्तिगत रूप से ओआरएम की तरह सिद्धांत जानता हूं या अनावश्यक और अक्षम होने का प्रस्ताव करता हूं। ज्यादातर मामलों में एक सरल डेटा एक्सेस लेयर कुछ सिंटैक्टिक चीनी के लिए आपके एप्लिकेशन के प्रदर्शन को नष्ट करने के बजाय, विशेष ध्यान देने की आवश्यकता वाले किसी भी चीज़ के लिए मैन्युअल एसक्यूएल के साथ ठीक काम करेगा। यह क्षेत्र एक सुंदर गर्म बहस है इसलिए मैं अब इसमें नहीं जाऊंगा।

यदि आपका मतलब डेटा आधार अमूर्त परत है, तो यह पीडीओ की रेखाओं के साथ कुछ होगा, ताकि आपके कोड का उपयोग बड़ी संख्या में डेटाबेस विक्रेताओं के लिए किया जा सके। पीडीओ दूसरों के बीच MySQL, PostgreSQL, और mysqli के साथ काम करता है, मुझे विश्वास है।

+0

मैं आपके उत्तर से थोड़ा उलझन में हूं। क्या आप इसे थोड़ा और सरल बना सकते हैं।हो सकता है कि कुछ और उदाहरण मदद कर सकें। मैं वास्तव में उलझन में हूँ। – kamal

29

डेटा एक्सेस परत = बनाने, पढ़ने, अद्यतन, हटाएँ (CRUD) अपने आवेदन डोमेन

डेटा एब्सट्रैक्शन लेयर के लिए विशिष्ट कार्यों =, कनेक्शन की तरह सामान्य डेटाबेस कार्यों प्रदर्शन आदेश, विक्रेता विशिष्ट डेटा पुस्तकालयों से आप रोधक मानकों और डेटा का उपयोग करने के लिए एक उच्च स्तरीय एपीआई प्रदान करना चाहे आप MySQL, Microsoft SQL Server, Oracle, DB2, आदि का उपयोग करें ...

+2

लघु और स्वीट। बहुत बढ़िया। –

5

विकी से:

Data Access Layer

एक डेटा का उपयोग परत (दाल) कंप्यूटर सॉफ्टवेयर, एक कंप्यूटर प्रोग्राम है जो किसी के स्थायी संग्रह में संग्रहीत डेटा की सरलीकृत पहुँच प्रदान करता है की एक परत है दयालु, जैसे एक इकाई-संबंध डेटाबेस।

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

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

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

Database Abstraction Layer

एक डेटाबेस अमूर्त परत किसी एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस जो एक कंप्यूटर अनुप्रयोग है और इस तरह एसक्यूएल सर्वर, DB2, MySQL, PostgreSQL, ओरेकल या SQLite के रूप में डेटाबेस के बीच संचार को एकीकृत है। परंपरागत रूप से, सभी डेटाबेस विक्रेता अपने उत्पादों के अनुरूप अपने इंटरफ़ेस प्रदान करते हैं जो एप्लिकेशन प्रोग्रामर को सभी डेटाबेस इंटरफेस के लिए कोड लागू करने के लिए छोड़ देता है, जिसे वह समर्थन देना चाहता है। डाटाबेस एब्स्ट्रक्शन लेयर डेवलपर को एक सतत एपीआई प्रदान करके काम की मात्रा को कम करता है और जितना संभव हो सके इस इंटरफेस के पीछे डेटाबेस विनिर्देशों को छुपाता है। कई प्रोग्रामिंग भाषाओं में विभिन्न इंटरफेस के साथ कई अमूर्त परतें मौजूद हैं।

असल में, अमूर्त की अपनी एक अतिरिक्त परत ताकि विक्रेता स्वतंत्र इंटरफेस के खिलाफ आप CRUD और विभिन्न डेटाबेस विक्रेताओं के कार्यान्वयन विवरण के बारे में चिंता कम करें। आपको केवल तभी इसकी आवश्यकता होगी यदि आप एक से अधिक डेटाबेस का समर्थन करना चाहते हैं। ओआरएम, माइक्रो ओआरएम, रैपर, जेनेरिक ड्राइवर वर्ग, जो कुछ भी नाम है, आदि जो कनेक्शन स्थापना, पैरामीटर हैंडलिंग, निष्पादन इत्यादि से संबंधित है यहां गिरते हैं। यह स्थिरता/संग्रहण परत से ठीक पहले एक अतिरिक्त परत है। 3 स्तरीय शब्दावली में, ये दोनों परतें एक के अंतर्गत आती हैं क्योंकि वे तार्किक रूप से अलग नहीं हैं।


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

संबंधित मुद्दे