2016-08-11 5 views
22

मेरे पास एक एक्समरिन फॉर्म एप्लिकेशन है जिसे मैं विकसित करना चाहता हूं। इसमें एक SQLite डेटाबेस होगा और मैं इसे आईओएस और एंड्रॉइड पर उपलब्ध करना चाहता हूं। डाटाबेस प्रारंभिक बीज डेटा के साथ क्लाउड पर SQL सर्वर डेटाबेस से डेटा के साथ पॉप्युलेट किया जाएगा। मुझे लगता है कि यह प्रत्येक पंक्ति के साथ 1 किलो के बारे में डेटा की लगभग 500 पंक्तियां होगी।क्या मुझे हर बार एप्लिकेशन अपडेट होने पर नया SQLite डेटाबेस बनाने की आवश्यकता है?

मुझे समझ में नहीं आता कि यह कब और कैसे पॉप्युलेट करना है। क्या मुझे डेटा को CSV फ़ाइल में डालने का प्रयास करना चाहिए और जब एप्लिकेशन इंस्टॉल हो, या जब यह पहली बार शुरू होता है तो यह डेटाबेस को पॉप्युलेट करता है? भारी संख्या में डालने के बयान के साथ कोड के अंदर लाइनों के अलावा बीज डेटा को पॉप्युलेट करने का सामान्य तरीका क्या है।

सामान्य रूप से यह कैसे किया जाता है इस पर कोई मदद या सलाह (मुझे लगता है कि ज्यादातर लोग इसे वही करते हैं) बहुत सराहना की जाएगी।

धन्यवाद

+3

आप देख सकते हैं डेटाबेस से मौजूद है। यदि ऐसा नहीं होता है, तो डेटा बीज करें, अन्यथा कुछ भी नहीं करें। –

+0

बीज में बड़ी संख्या में पंक्तियां हैं। क्या आप ऐसा करने के लिए किसी भी अनुशंसित तरीके से जानते हैं? क्या मुझे फ़ाइल में डेटा से बीज करने की कोशिश करनी चाहिए? – Alan2

+0

मैं इसे संसाधन के रूप में रखूंगा। यदि इसकी केवल 500 किलोबाइट है, तो इसकी बहुत अधिक जगह नहीं है। जब ऐप पहली बार शुरू होता है, तो इसे संसाधन से डिस्क पर कॉपी करें और आप – lokusking

उत्तर

10

समस्या को तोड़ने की सुविधा देता है।

प्रारंभिक डेटा है कि आप अपने अनुप्रयोग में उपयोग करना चाहते हैं समय के साथ बदल के लिए जा रहा है?

आप किसी भी पहले से भरे डेटा (एक SQLite, क्षेत्र, या CSV-आधारित फ़ाइल, ...) और आप चला जाता है बासी शामिल कर रहे हैं कि डेटा शामिल हैं और आप एक नियमित पर इसे अद्यतन करने है, तो आधार पर, आपको को एक एप्लिकेशन अपडेट (.apk/.ipa) प्रकाशित करने की आवश्यकता होगी ताकि आपके नए उपयोगकर्ता को अपडेट किए गए डेटा (नीचे इस पर अधिक) प्राप्त करें।

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

इस व्यवसाय (LoB) आवेदन की एक लाइन तदर्थ के माध्यम से प्रकाशित, निजी स्टोर, और/या आईओएस उद्यम प्रकाशन है?

आप उपयोगकर्ता आधार, एक अद्यतन स्थापित तो अपने उपयोगकर्ताओं को अपनी नए/अपडेट पहले से भरे डेटा एक स्वीकार्य दृष्टिकोण हो सकता है पाने के लिए मजबूर करने की तुलना में, लेकिन नहीं एक महान उपयोगकर्ता अनुभव को नियंत्रित करते हैं अगर वे अद्यतन करने के लिए मजबूर आवेदन हर समय ... लेकिन यह काम करता है ...

इस आवेदन सार्वजनिक एप्पल और गूगल एप स्टोर के माध्यम से वितरित किया जा रहा है?

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

डेटा बासी हो जाता है और आप अपने नए इंस्टॉल पर स्थापित करने के लिए स्टोर करने के लिए एक अद्यतन एप्लिकेशन संस्करण पुश करने के लिए, सावधान रहना है कि यह दिन (या हफ्तों या यहाँ तक कि महीने +) हो सकता है कि दुकान में नए एप्लिकेशन प्राप्त करने की आवश्यकता ।

प्ले स्टोर आमतौर पर ऐप अपडेट प्रकाशित करने पर कम 24 घंटे है, और जब एप्पल स्टोर में एक ही हो सकता है, यह पर दांव नहीं है।

हम नियमित रूप से 48-72 घंटे की देरी देखते हैं और यादृच्छिक रूप से अस्वीकार हो जाते हैं और इस प्रकार ऐप्पल स्टोर में अपडेट ऐप प्राप्त करने में एक सप्ताह या अधिक समय लग सकता है। हम महीने से अधिक के लिए एक ऐप अपडेट में देरी को अस्वीकृत कर दिया था और अपील प्रक्रिया में चले गए हैं और यहां तक ​​कि हटाया पहले से ही विद्यमान सुविधाओं को पाने के लिए फिर से प्रकाशित

नोट: एप्पल स्टोर के लिए हर ऐप अपडेट अपने उपयोगकर्ता रीसेट करता है समीक्षाएँ ... :-(

निष्कर्ष: आप स्टोर जब आप बग फिक्सिंग और/या जोड़ने विशेषताएं हैं करने के लिए प्रकाशित करने के लिए कि भीतर संग्रहीत किया जाता है कुछ "स्थिर" डेटा अद्यतन करने के लिए नहीं करना चाहता करना चाहते हैं आपका ऐप बंडल ...

यह डेटा लागत आपका अंतिम उपयोगकर्ता और आप क्या है?

ऐप डेवलपर के रूप में आपके लिए नकारात्मक लागत खराब समीक्षा और अनइंस्टॉल हैं। देखें कि यह "डेटा" अंत उपयोगकर्ताओं को आपके एप्लिकेशन तक कैसे पहुंचता है और वे कैसे प्रतिक्रिया करते हैं। लंबे समय तक डाउनलोड समय, आमतौर पर स्वीकार्य। लंबे प्रारंभिक ऐप स्टार्टअप समय, कम स्वीकार्य ... आदि ....

आपके ऐप का उपयोग किस बाजार में किया जाएगा? नेटवर्क की गति और दुनिया भर के कई बाजारों में डेटा ट्रांसफर की लागत धीमी और महंगी है ...

डेटा का सही आकार वास्तव में क्या है?

मैं एक वास्तविक डेटा उदाहरण पूर्व-पॉप्युलेट करता हूं जिसमें हजारों पंक्तियों के साथ 5 एमबी JSON डेटा के साथ एक सेकंड के नीचे होता है। SQLite लंबा लगता है, लेकिन यह अभी भी बुरा नहीं है।डेटा को एक ज़िप में संग्रहीत किया जाता है और एक स्थिर फ़ाइल (https- आधारित प्राप्त) के रूप में उपयोग किया जाता है और 80% संपीड़न कारक पर, एलटीई सेलुलर डेटा का उपयोग कर एक सेकंड के नीचे संपीड़ित डेटा को 1 सेकंड से संपीड़ित डेटा खींच लिया जाता है जेएसओएन ऑन-फ्लाई को रीयलम इंस्टेंस अपडेट करने के लिए deserializing जबकि गति और इसे असंपीड़ित करते हुए एक और सेकंड जोड़ता है ...

तो, उपयोगकर्ता प्रभाव बहुत छोटा है और मैं इस प्रारंभिक प्री-पॉप्यूलेट अपडेट को पहले "छुपा" टाइम स्क्रीन और कुछ पाठ कि उपयोगकर्ता उम्मीद है कि पहले "असली" एप्लिकेशन स्क्रीन के लिए हो रही से पहले पढ़ता का स्वागत करते हैं ...

नोट: यह मान कि उपयोगकर्ता नेटवर्क डाटा पहली बार वे खोलने के लिए उपयोग होगा करता है ऐप ... दुनिया भर के कई बाजारों में, यह है सच नहीं है, तो इसे अपने ऐप डिज़ाइन में कारक बनाएं।

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

तो क्या आपको अपने ऐप बंडल में कोई भी पूर्व-जनसंख्या वाला डेटा शामिल करना चाहिए?

निश्चित रूप से, जब उपयोगकर्ता को उपयोगकर्ता अनुभव को बढ़ाने के लिए जितनी जल्दी संभव हो सके और चलाने के लिए वह डेटा आवश्यक है। गेम 100 मेगाबाइट्स या यहां तक ​​कि गीगाबाइट्स को .obb के माध्यम से ... विभिन्न स्तरों, मीडिया फाइलों आदि के साथ ऐप में बंडल करने का एक शानदार उदाहरण है ताकि उपयोगकर्ता को 10+ मिनट का अनुभव न हो। ऐप को पहली बार खोलने पर समय प्रतीक्षा करें।

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

तो क्या करें?

व्यक्तिगत रूप से मैं इस मामले को मामले के आधार पर देखता हूं। मैं डेटा देखता हूं और यदि यह बदलने वाला नहीं है और केवल समय के साथ जोड़ा जा सकता है और संभावित रूप से छंटनी की जाती है, तो इसे प्री-पॉप्युलेटेड SQLite या Realm store के रूप में शामिल करें या ... उपयोगकर्ता को वेब अनुरोधों का इंतजार क्यों करना है, डेटाबेस अद्यतन और अतिरिक्त नेटवर्क डेटा उपयोग और संबंधित लागत। यदि डेटा बासी जा रहा है, तो इसे अपने ऐप में बंडल न करें।

पूर्व आबादी वाले डेटा को स्थापित करने के यांत्रिकी के लिए के रूप में:

इस पर मेरा उत्तर देखें एसओ के बारे में सवाल "Bundle prebuilt Realm files"

6

आप अपने SQLite डेटाबेस हर बार एप्लिकेशन अद्यतन किया जाता है बनाने के लिए नहीं है। असल SQLiteOpenHelper निम्नलिखित दो तरीकों प्रदान करता है:

  1. OnCreate(): आप इस विधि को लागू करने और सर्वर से अधिक आबादी वाले डेटा के साथ अपने SQLite डेटाबेस बनाना चाहिए। यह तब कहा जाता है जब आप पहली बार ऐप शुरू कर देते हैं।
  2. OnUpgrade(): यदि आप डेटाबेस को संशोधित करना चाहते हैं (तालिका में एक नई तालिका या कॉलम जोड़ें) या अतिरिक्त डेटा पॉप्युलेट करना चाहते हैं तो आपको इस विधि को लागू करना चाहिए।

डेटाबेस ऐप अपडेट के बीच संरक्षित है और आपको इसे हर बार बनाने की आवश्यकता नहीं है।

चेक इन उदाहरणों को देखें जो वर्णन करती हैं कि Xamarin साथ SQLite डेटाबेस का उपयोग करने के लिए:

Using Sqlite in a Xamarin.Android Application Developed using Visual Studio

और

An Introduction to Xamarin.Forms and SQLite

+0

कर चुके हैं लेकिन आप डेटा को कैसे अपडेट करते हैं। क्या पिछले और वर्तमान संस्करण के बीच कोई मर्ज विकल्प संभव है? – batmaci

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

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