2009-03-26 14 views
19

वास्तव में क्या बेहतर है? उदाहरण के लिए नेस्टेड ऑब्जेक्ट्स के लिए लोड करने के लिए ज़िम्मेदार जटिल प्रश्नों वाले कक्षाएं हैं? या सामान्य वस्तुओं को लोड करने के लिए जिम्मेदार सरल प्रश्नों वाले वर्ग?एकाधिक जटिल प्रश्न बनाम एक जटिल क्वेरी

जटिल प्रश्नों के साथ आपको डेटाबेस में कम जाना होगा लेकिन कक्षा की ज़िम्मेदारी अधिक होगी।

या सरल प्रश्न जहां आपको डेटाबेस में और जाने की आवश्यकता होगी। इस मामले में हालांकि प्रत्येक वर्ग एक प्रकार की वस्तु लोड करने के लिए जिम्मेदार होगा।

मैं जिस स्थिति में हूं, वह है कि लोड की गई वस्तुओं को फ्लेक्स एप्लिकेशन (डीटीओ) में भेजा जाएगा।

उत्तर

15

अंगूठे का सामान्य नियम यह है कि सर्वर राउंडट्रिप्स महंगी हैं (एक सामान्य क्वेरी कितनी देर तक लेती है) के संबंध में मार्गदर्शक सिद्धांत यह है कि आप उन्हें कम करना चाहते हैं। असल में प्रत्येक एक से अधिक शामिल होने से आपके परिणाम सेट को संभावित रूप से गुणा किया जाएगा, इसलिए जिस तरह से मैं इसका संपर्क करता हूं, तब तक शामिल होना जारी रखना है जब तक कि परिणाम सेट बहुत बड़ा न हो या क्वेरी निष्पादन समय बहुत लंबा हो (आमतौर पर लगभग 1-5 सेकंड)।

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

कभी-कभी मेमोरी (देश की जानकारी, उदाहरण के लिए) में कुछ अपेक्षाकृत निरंतर डेटा रखने या उन्हें अलग से पूछताछ के रूप में करने के लायक है, लेकिन यह मेरे अनुभव में, असामान्य रूप से असामान्य है।

बड़े हिस्से में अलग-अलग प्रश्नों (विशेष रूप से सहसंबंधित प्रश्न) करने के बजाय अलग-अलग कारणों से सिस्टम को ठीक करने के लिए बहुत आम बात है।

4

एक आंत महसूस मैं कहूंगा से:

जब तक वहाँ कोई सिद्ध कारण प्रदर्शन के लिए अनुकूलन करने के लिए है के रूप में सरल तरीके के साथ जाओ। अन्यथा मैं समयपूर्व अनुकूलन की टोकरी में "जटिल वस्तुओं और क्वेरी" दृष्टिकोण डालूंगा।

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

7

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

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

तो अपनी असली समस्या को देखें और इसे उचित तरीके से हल करें। मुझे लगता है कि अगर सरल उनके खिलाफ कोई मजबूत उद्देश्य नहीं है तो शुरुआत के लिए सरल प्रश्न अच्छे हैं।

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