2012-05-29 22 views
19

के साथ उल्का का उपयोग करना मैं अपने संबंधपरक डेटाबेस (PostgreSQL) से कनेक्ट करने के लिए उल्का का उपयोग करना चाहता हूं। क्या उल्का को अन्य डेटाबेस में जोड़ने में कोई अनुभव है?postgresql

मुझे लगता है कि हमें PostgreSQL के साथ उल्का की अच्छी विशेषताओं का उपयोग करने के लिए अपना स्वयं का कनेक्टर लिखना है।

अद्यतन: नीचे दिए गए उत्तर को देखें। चूंकि यह प्रश्न अभी भी ध्यान दे रहा है, समाधान का लिंक है।

https://github.com/meteor-stream/meteor-postgres

उत्तर

5

हाँ, आप अपने खुद के कनेक्टर लिखने के लिए की है। मैं भी mysql के लिए ऐसी चीज ढूंढ रहा हूं, लेकिन मुझे नहीं लगता कि किसी ने इस मोर्चे पर कोई प्रयास शुरू कर दिया है। मुझे इस दिशा में किसी भी चल रहे प्रयासों को जानना अच्छा लगेगा।

mysql के लिए समान प्रश्न देखें। Meteor with mysql

+1

किसी ने अभी किया :) https://github.com/drorm/meteor-sql –

2

अभी आप जो उपलब्ध हैं, उससे सबसे नज़दीकी बात यह है कि Meteor SQL project है, हालांकि यह वर्तमान में केवल MySQL का समर्थन करता है।

शायद आप पोस्टग्रेस का समर्थन करने के लिए प्रोजेक्ट में योगदान देने पर विचार करेंगे?

4

यदि आप मेरे जैसे हैं, तो आप उल्का से प्यार करते हैं लेकिन मोंगो से नफरत करते हैं। उल्का के ट्रेलो रोडमैप (https://trello.com/b/hjBDflxp/meteor-roadmap) में, सबसे अधिक वोट की गई सुविधा एसक्यूएल सपोर्ट है, या तो पोस्टग्रेएसक्यूएल या माईएसक्यूएल।

चूंकि मेटियर में इसके लिए कोई तारीख नहीं है, इसलिए यहां मैंने आंशिक समाधानों को सारांशित किया है।

1.- क्लाइंट-साइड क्वेरी के लिए केवल SQL का उपयोग करें।

** अद्यतन:

आप

meteor add agershun:alasql 

AlaSQL और उल्का मोंगो संग्रह

साथ alaSQL स्थापित कर सकते हैं अब आप तर्क के रूप में उल्का संग्रह का उपयोग कर सकते हैं: alasql अब एक उल्का पैकेज है। उल्का संग्रहों में एसक्यूएल लागू करें:

Template.body.helpers({ 
    tasks: function() { 
    return alasql('SELECT * FROM ?',[Tasks]); 
    } 
}); 

या आप खोज के साथ से कार्य विशेष उल्का के साथ विकल्प() का उपयोग कर सकते हैं():

return alasql('SELECT * FROM ?',[Tasks]); 
return alasql('SELECT * FROM METEOR(?)',[Tasks]); 
return alasql('SELECT * FROM METEOR(?,?)',[Tasks,{text:"Hello world!"}]); 
return alasql('SELECT * FROM METEOR(?,{text:"Hello world!"})',[Tasks]); 

क्यों न हम स्वीकार करते हैं, मोंगो आम डेटा के संचालन पर बेकार है, इसलिए डेटा क्वेरी करने के लिए एसक्यूएल का उपयोग करने की क्षमता रखने के साथ (जॉन्स, ग्रुप बाय और इतने पर) को बहुत दर्द होता है।ऐसे पैकेज हैं जो आपको कम से कम क्वेरी के लिए क्लाइंट में SQL का उपयोग करने देते हैं: सबसे सरल एक पुरानी (2010) उपयोगिता है, SqlLike (http://www.thomasfrank.se/sqlike.html)। शहर में नया खिलाड़ी alaSQL है, जिसे सक्रिय रूप से @agershun (https://github.com/agershun/alasql) द्वारा विकसित किया गया है। SqlLike लाभ यह है कि यह केवल 10k है। AlaSQL, ज़्यादा शक्तिशाली है, लेकिन यूनियनों और एग्रीगेशंस में मोंगो सिंटैक्स को प्रतिस्थापित करने के लिए एसक्यूएल का उपयोग करने के लिए, एसक्ललाइक ठीक है।

उन दोनों को आप अपने सहायक में कुछ इस तरह कर सकते हैं के साथ

: प्रत्यक्ष एसक्यूएल समर्थन के साथ

productsSold:function(){ 
    var customerSalesHistory=salesHistory.find({cutomerId:Session.get('currentCustomer')}).fetch(); 
    var items=products.find().fetch(); 
    return alasql("select item.name, sales.ordered as sumaVentas from ? sales, ? items 
     where items.Id=sales.itemId",[customerSalesHistory,items]); 
} 

2.- प्रयोग।

कुछ पैकेज मोंगो (और मिनिमोंगो) को MySQL या PostgreSQL के साथ बदलने की कोशिश करते हैं। @ numtel का MySQL पैकेज Meteor-MySQL https://github.com/numtel/meteor-mysql है, और PostgreSQL उल्का-पीजी (https://github.com/numtel/meteor-pg) है। दोनों समस्या को हल करने के लिए अच्छे प्रयास हैं, लेकिन अभी तक कुछ समस्याएं हैं और किसी भी तरह अनुकूलित करने के लिए बोझिल हैं।

हैक रिएक्टर से एक टीम ने उल्का स्ट्रीम का गठन किया है, और इसका पहला उत्पाद उल्का, उल्का-पोस्टग्रेस (https://github.com/meteor-stream/meteor-postgres) के साथ एक पोस्टग्रेस्क्ल एकीकरण है। यह बहुत अच्छा लगता है और क्लाइंट पर minimongo को बदलने के लिए alaSql का उपयोग करता है।

दोनों दृष्टिकोण से अच्छे हैं, लेकिन वे कुछ समस्याएं हैं:

वे उल्का के लिए तैनाती तोड़ दिया। वे बहुत ही युवा हैं और उत्पादन के करीब नहीं हैं AFAIK उन्हें अभी भी सामान्य पब-सब सिंटैक्स में बदलाव की आवश्यकता है, जिसका उपयोग हम अन्य उल्का पैकेजों के साथ संगतता मुद्दों को बढ़ा सकते हैं। 3.- फिर भी मोंगो का उपयोग करें, लेकिन अपने MySQL डेटाबेस के लिए सरल भंडार के रूप में।

यह विकल्प सभी उल्का की विशेषताओं को बनाए रखता है और आपके माईएसक्ल या पोस्टग्रेस्क्ल डेटाबेस के लिए मोंगो को अस्थायी भंडार के रूप में उपयोग करता है।

उस पर एक शानदार प्रयास @perak (https://github.com/perak/mysql-shadow) द्वारा mysql-shadow है। यह जो करता है वह करता है, मोंगो को MySQL के साथ दोनों तरीकों को सिंक्रनाइज़ करता है और चलो आप अपना डेटा MySQL में काम करते हैं।

बुरी खबर यह है कि डेवलपर इसे बनाए रखना जारी रखेगा, लेकिन सरल परिदृश्यों के साथ काम करने के लिए क्या किया जाता है, जहां आपके पास जटिल ट्रिगर नहीं होते हैं जो अन्य टेबल या उस तरह की चीजें अपडेट करते हैं।

एक पूर्ण विशेषीकृत सिंक्रनाइज़ेशन के लिए आप एक बहुत अच्छी तरह से परीक्षण डेटाबेस प्रतिकृतिक SymmetricsDS (http://www.symmetricds.org) का उपयोग कर सकते हैं। इसमें निश्चित रूप से एक नया जावा सर्वर स्थापित करना शामिल है, लेकिन यह सुनिश्चित करने का सबसे अच्छा तरीका है कि आप अपने मोंगो डेटाबेस को अपने असली MySQL, PostgreSQL, SQL सर्वर, इनफॉर्मिक्स डेटाबेस के एक साधारण भंडार में परिवर्तित करने में सक्षम होंगे। मुझे इसे अभी तक जांचना है।

अब के लिए MySQL छाया एक अच्छा पर्याप्त समाधान की तरह प्रतीत होता है।

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

इसके अलावा, अगर किसी दिन मेटीर टीम एसक्यूएल एकीकरण में उठाए गए कुछ डॉलर का उपयोग करती है, तो आपके ऐप की तरह काम करने की अधिक संभावना है।

+0

आप मोंगोद से नफरत क्यों करते हैं? –

+0

क्योंकि मुझे denormalized डेटाबेस से नफरत है और क्वेरी भाषा मोंगो –

+0

का उपयोग करता है क्यों आप denormalized डेटाबेस और Mongos क्वेरी भाषा से नफरत करते हैं? मैं नो-एसक्यूएल डीबीएस के साथ लोगों के अनुभव पर कुछ स्पष्टता प्राप्त करने की कोशिश कर रहा हूं और वास्तव में आपके अनुभव को सुनने की सराहना करता हूं। –