डाटा:चमकदार एप्लिकेशन को तेजी से चलाने के लिए सर्वोत्तम प्रथाएं क्या हैं?
मैं एक चमकदार डैशबोर्ड आवेदन है और मेरे डाटासेट चारों ओर आकार में 600 एमबी है। यह हर महीने 100 एमबी द्वारा swells। मेरा डेटा MySQL में स्थानीय रूप से रहता है।
MenuItems: - मेरे डैशबोर्ड पर 7 साइडबार menuItems और उनमें से प्रत्येक 10 है -
मैं 6 है 12 विभिन्न आउटपुट - चार्ट और टेबल। डेटा में फ़िल्टर करने के लिए इन टैबों में से प्रत्येक में 3 - 6 इनपुट हैं जैसे selectizeInput, स्लाइडर, दिनांक सीमा इत्यादि।
डाटा सबसेट:
जब से मैं समय अवधि पर रखने सिर्फ 2 से स्मृति में सभी डेटा लोड नहीं कर सकता, हर मेनू आइटम के लिए मैं तिथि सीमा के आधार पर डेटा का एक उप बना सकते हैं - 3 दिन सिस्टम की तारीख से।
उदाहरण के लिए:
df1 <- reactive({df[df$date >- dateinput[1] & df$date <- dateinput[2], ]})
ऊपर मेरी पहली मेनू आइटम और selectInput या अन्य इनपुट के आधार पर, मैं आगे डेटा को फ़िल्टर कर रहा हूँ के लिए डेटा हो जाता है।
df2 <- reactive({
if(is.null(input$Gender)){
df1
} else if(input$Gender == "Male")
{df1[df1$Gender == "Male",]}
)}
अगर मैं 1 से अधिक इनपुट है, मैं इस DF1 आगे सबसेट और df2 को मान प्रदान करने वाली: उदाहरण के लिए, अगर मैं Gender (male and female)
के लिए एक selectInput है तो मैं आगे df1
के सबसेट होते हैं। df2 उस मेनूइटम में सभी चार्ट और तालिकाओं के लिए प्रतिक्रियाशील डेटासेट बन जाता है।
मेनू Item की संख्या जितनी अधिक मैं फ़िल्टर और विश्लेषण के अनुरूप अधिक सबसेट बनाती हूं।
- पुरानी मशीनों पर, ऐप्स लोड नहीं है:
मैं दो समस्याओं का सामना। और
- नए मशीनों पर, ऐप्स भार बहुत धीरे धीरे कभी कभी 5 - 6 मिनट
डेटा लोड के पहले सेट के बाद, चार्ट और टेबल प्रतिक्रियाशील परिवर्तन पर तेजी से गाया जाता है।
इसका मुकाबला करने के लिए, मैंने सभी सामान्य और दोहराव वाले पैरामीटर और पुस्तकालयों को वैश्विक स्तर पर ले जाने की कोशिश की है। आर।
1.Are वहाँ किसी भी बुनियादी स्वच्छता कारकों एक विशेष रूप से चमकदार के माध्यम से जब आर में डेटा खनन को ध्यान में रखने की जरूरत है (आर में खनन बहुत तेज है):
मैं दो प्रश्न हैं।
2. मैंने समांतर प्रसंस्करण के बारे में पढ़ा है, लेकिन लगभग हमेशा सभी उदाहरण एक भारी गणना को वितरित करने के बारे में बात करते हैं। क्या हम समांतर प्रसंस्करण, डेटा को सब्सक्राइब करने या चार्ट/टेबल तैयार करने के वितरण के माध्यम से वितरित कर सकते हैं।
कृपया ध्यान दें, मैं एक शोधकर्ता हूं और प्रोग्रामर नहीं हूं, लेकिन क्लाउड या स्थानीय रूप से हाल ही में चमकदार और मेजबान अनुप्रयोगों का उपयोग करना सीखा है।
इस पर मार्गदर्शन आर मेरे जैसे कई नौसिखिया उपयोगकर्ताओं के लिए बहुत उपयोगी होगा।
वास्तव में दिलचस्प सवाल है, मुझे लगता है कि मुझे अपने डैशबोर्ड के साथ कुछ महीने में इस समस्या का सामना करना पड़ेगा। क्या आप अपने SQL डेटा बेस evry समय पर अनुरोध भेज रहे हैं या ऐप चलने के बाद आप इसे Rdata में लोड कर रहे हैं? फिर 'df1 [df1 $ लिंग == "पुरुष",] का उपयोग करके, आपके डेटा को सबसेट करने के लिए बहुत धीमा है, क्या आपने पैकेज' dplyr' से 'फ़िल्टर' फ़ंक्शन का उपयोग करने का प्रयास किया है, जब आपके पास बड़ा डेटा सेट –
है यह पता लगाने की आवश्यकता है कि क्या धीमापन डेटाबेस पहुंच या किसी भी आर कार्यों के कारण है। यहां कुछ विचार दिए गए हैं जो http://stackoverflow.com/questions/21484115/code-profiling-for-shiny-app की सहायता कर सकते हैं जब आप कहते हैं कि ऐप पुरानी मशीनों पर लोड नहीं होता है, तो यह पता लगाने की कोशिश करें कि यह स्मृति सीमा के कारण है या ब्राउज़र संस्करण इत्यादि। चमकदार जावास्क्रिप्ट का भारी उपयोग है जो पुराने ब्राउज़र पर काम नहीं कर सकता है। –
इस प्रश्न से संबंधित एक और दिलचस्प बिंदु, कि मुझे अपने आप को जवाब नहीं पता: यदि आपके पास एकाधिक प्रतिक्रियाशील मान हैं, तो इस उदाहरण में डीएफ 1 और डीएफ 2 जैसे सभी बड़े (उप) डेटासेट, स्मृति डेटा में रखे गए डेटा फ्रेम हैं हर समय? मुझे लगता है कि वे हैं। यदि वे हैं, तो यह एक अच्छा अभ्यास हो सकता है कि एक डीएफ <- प्रतिक्रियाशील ({...}) हमेशा उस 'वर्तमान' डेटासेट को वापस लौटाए जो आप काम कर रहे हैं। –