2010-10-24 19 views
17

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

मुझे समाधान here समाधान मिला है और मैं एक बेहतर समाधान/एल्गोरिदम के बारे में पढ़ना चाहता हूं।

उत्तर

1

मैं आपके सर्वर पर डीबी फ़ाइल भेजने और सर्वर पक्ष पर विलय करने की सलाह दूंगा। फिर आवश्यक होने पर ग्राहक को विलय डीबी वापस भेज दें। आपका समाधान संघर्ष समाधान एल्गोरिदम और आपके डेटाबेस स्कीमा के आधार पर भिन्न होगा।

sqlite> attach 'client.db3' as ClientDBtoMerge;   
sqlite> insert into TableName select * from ClientDBtoMerge.TableName; 
sqlite> detach database ClientDBtoMerge; 

आशा है कि आप द्वि-दिशात्मक मर्ज के लिए उदाहरण में बदलाव करने में सक्षम हो रहे हैं: लेकिन यहाँ सबसे सामान्य स्थिति के लिए उदाहरण है।

+0

एक monouser वातावरण में बैकअप के लिए एक समाधान हो सकता है। लेकिन बहुउद्देशीय के लिए नहीं कर सकते हैं। फिर भी धन्यवाद। – Juanin

+1

क्यों नहीं? आपके पास सर्वर पर मास्टर डेटाबेस हो सकता है और इसे अनुरोध-दर-अनुरोध आधार पर या सभी को एक साथ मिलाएं। या आपको डेटाबेस के बीच रीयल-टाइम सिंक की आवश्यकता है? मामले में आप प्रतिकृति के बारे में बात कर रहे हैं जो असंभव है क्योंकि आपको अपने सभी क्लाइंट फोन का 100% ऑनलाइन समय चाहिए। – cement

6

क्या आप ओरेकल डेटाबेस का उपयोग अपने सर्वर-साइड डीबी के रूप में कर सकते हैं?

यदि ऐसा है, तो आपको ओरेकल डेटाबेस लाइट पर विचार करना चाहिए, जिसमें एक पूर्ण सिंक्रनाइज़ेशन समाधान शामिल है जो SQLite और Android के साथ संगत है, और बहु-उपयोगकर्ता वातावरण के लिए डिज़ाइन किया गया था।

यह स्वचालित सिंक्रनाइज़ेशन, उन्नत संघर्ष समाधान, और एकाधिक सिंक मॉडल का समर्थन करता है। यह केंद्रीय प्रबंधन कंसोल और यहां तक ​​कि डिवाइस प्रबंधन से ऐप्स को तैनात और प्रबंधित करने का भी समर्थन करता है।

आप यहाँ इसके बारे में अधिक पढ़ सकते हैं: http://www.oracle.com/technetwork/database/database-lite/overview/index.html

इसके अलावा, आप अपने आप के लिए इसे आज़माने के लिए डाउनलोड टैब पर क्लिक कर सकते हैं।

एरिक

+0

धन्यवाद एरिक, लेकिन मैं उबंटू पर PostgreSQL का उपयोग कर रहा हूं। इस परियोजना के लिए ओरेकल बहुत महंगा है। – Juanin

+0

ठीक है। किसी भी मामले में, आपकी परियोजना के साथ शुभकामनाएँ! –

0

एक अन्य विकल्प litesync

उपयोग कर रहा है यह SQLite पुस्तकालय का एक संशोधन तुल्यकालन लागू करने के लिए है।

इस तरह एक तारक हम एक संशोधित यूआरआई का उपयोग कर एक प्राथमिक नोड के रूप में सर्वर में डेटाबेस को खोलने का उपयोग करना,:

"file:/path/to/app.db?node=primary&bind=tcp://0.0.0.0:port" 

और मोबाइल उपकरणों पर हम प्रयोग कर स्थानीय डेटाबेस खोलें:

"file:/path/to/app.db?node=secondary&connect=tcp://server:port" 

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