2010-01-20 8 views
5

के लिए आईबीपीपी इंटरफेस के साथ अनुभव मैं फायरबर्ड और आईबीपीपी (विशेष रूप से उत्तरार्द्ध) में अनुभव के साथ लोगों से पूछना चाहता हूं। मुझे फायरबर्ड के बारे में बहुत सारी सकारात्मक पोस्ट मिलीं लेकिन मुझे आईबीपीपी के बारे में फैसला करने में कोई समस्या है। इंटरफ़ेस स्वयं स्वच्छ और सरल है लेकिन ऐसा लगता है कि इस परियोजना में बहुत अधिक गतिविधि नहीं चल रही है (शायद क्योंकि यह बहुत स्थिर है)।फ़ायरबर्ड डेटाबेस

  • क्या आप उत्पादन वातावरण के लिए आईबीपीपी की सिफारिश करेंगे?
  • क्या यह धागा-सुरक्षित है?
  • कोई ज्ञात बग?

धन्यवाद।

उत्तर

3

अंक के अलावा मिलान उल्लेख किया:

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

  • पुस्तकालय धागा सुरक्षित नहीं है। इससे अधिकांश भाग के लिए कोई फर्क नहीं पड़ता, क्योंकि आपको प्रत्येक धागे को अपना कनेक्शन, लेनदेन और अन्य मिश्रित वस्तुओं को वैसे भी देना चाहिए। लेकिन आईबीपीपी अपने स्मार्ट सूचक कार्यान्वयन का उपयोग करता है, जो न तो पूरी तरह अपवाद-सुरक्षित है और न ही थ्रेड-सुरक्षित है।फिर भी, जब तक आप मुख्य धागे से लाइब्रेरी को प्रारंभ करते हैं (किसी भी अन्य थ्रेड से पहले) और आईबीपीपी ऑब्जेक्ट्स को उसी थ्रेड में बनाएं और नष्ट करें (इसलिए अन्य धागे के साथ ऑब्जेक्ट्स का बिल्कुल साझा नहीं करना!) आईबीपीपी का उपयोग करके कई धागे में काम करना चाहिए ठीक।

  • यदि आप उपरोक्त बिंदुओं के साथ रह सकते हैं (वे आपके लिए कोई फर्क नहीं पड़ता) यह निश्चित रूप से उत्पादन के उपयोग के लिए तैयार है। आप हमेशा जो चीजें चलाते हैं उन्हें बदल सकते हैं, जैसा कि हमने फ्लेमरोबिन के लिए भी किया था।

+1

मागी के पहले बिंदु पर: आप बिल्कुल सही हैं, लेकिन कोड में जा रहे हैं और क्लाइंट लाइब्रेरी का पथ बदलना वास्तव में काफी आसान है (फ़ाइल: "_ibpp.cpp", अनुभाग: जीडीएस :: कॉल())। चूंकि एम्बेडेड डेटाबेस "fbembed.dll" के लिए क्लाइंट लाइब्रेरी रिमोट डेटाबेस से कनेक्शन को सक्षम बनाता है (fbclient.dll fbembed.dll का उप-समूह प्रतीत होता है) तो आपको शायद क्लाइंट लाइब्रेरी को बदलने की आवश्यकता नहीं है। –

+1

@ एर्गोडिसिटी: सच है, लेकिन फिर भी यह सभी कनेक्शनों के लिए एक एकल क्लाइंट लाइब्रेरी है। मेरा जवाब एक ही समय में एकाधिक क्लाइंट पुस्तकालयों का उपयोग करने के संबंध में था, जो कि फायरबॉर्ड क्लाइंट टूल्स जैसे फ्लेमबॉबिन (जो अभी भी नहीं है) की एक आम विशेषता है। तब संभव नहीं था (5 साल से अधिक पहले), और AFAIK आज स्थिति वास्तव में अलग नहीं है। यह स्वयं प्रश्न के संदर्भ में दिलचस्प हो सकता है, फिर "परियोजना में बहुत अधिक गतिविधि नहीं चल रही है" ... – mghie

+0

@ मिगी आप कहेंगे, किसी को [फ्लैबरोबिन में उपयोग किए जाने वाले ibpp कांटा] का बेहतर उपयोग करना चाहिए (https : //github.com/mariuz/flamerobin/tree/master/src/ibpp) (वर्तमान स्थिति में)? – Wolf

1

मैं वास्तव में अनुभव से नहीं कह सकता क्योंकि मैंने कभी भी आईबीपीपी का उपयोग नहीं किया है।
लेकिन स्पष्ट रूप से इसका उपयोग फ्लैमरोबिन प्रोजेक्ट द्वारा किया जाता है, इसलिए मुझे विश्वास है कि यह 'स्थिर स्थिर' होगा।

+0

नहीं बल्कि SourceForge https://sourceforge.net/projects/ibpp/files/ से अपरिवर्तित संस्करण - एफआर भी GitHub के लिए एस एफ से "चले गए" https://github.com/mariuz/flamerobin/tree/मास्टर/src/ibpp – Wolf

3

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

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

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

केवल एक चीज के बारे में सावधान रहने की संख्यात्मक फ़ील्ड, जिसका उपयोग आंतरिक पूर्णांक + Firebird में पैमाने के रूप में जमा कर रहे हैं। आईबीपीपी उन लोगों को सी/सी ++ "डबल" के माध्यम से उजागर करता है, लेकिन 16/32/64 बिट पूर्णांक के माध्यम से भी। इसलिए ऐसे मूल्यों को पुनर्प्राप्त करते समय बहुत सावधान रहें, क्योंकि आपको कोई चेतावनी नहीं मिलेगी। उदाहरण के लिए, यदि आपके पास मूल्य 254.00 के साथ डेसीमल (18,2) फ़ील्ड है, और आप दुर्घटनाग्रस्त रूप से इसे पूर्णांक में पढ़ते हैं, तो आपको 25400 मिलेगा, 254 नहीं। सुनिश्चित करें कि आप या तो उन्हें बाद में डबल या स्केल करें। यह उपयोगी है क्योंकि आप सुरक्षित रूप से 25400 स्ट्रिंग में कनवर्ट कर सकते हैं और फिर दशमलव बिंदु जोड़ सकते हैं, इसलिए आप डबल के साथ सटीकता नहीं खोते हैं (यह सब आपके आवेदन के प्रकार पर निर्भर करता है और निश्चित रूप से कौन से अंक गिनते हैं)।

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

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