2008-09-26 15 views
8

एक सरकारी एजेंसी के लिए, हम PHP और ओरेकल में विकसित एक रिलीज प्रबंधन प्रणाली का निर्माण करते हैं। इस एप्लिकेशन के लिए डेटा डेटाबेस टेबल में संग्रहीत है और पीएल/एसक्यूएल संकुल और प्रक्रियाओं के साथ संसाधित किया जाता है।ओरेकल पीएल/एसक्यूएल से सबवर्जन तक कैसे पहुंचे?

रिहाई प्रबंधन की प्रक्रिया में बड़े पैमाने पर मेटाडाटा सबवर्सन खजाने से आ रही पर आधारित है। हम ओरेकल सर्वर पर svn कमांड निष्पादित करने के लिए आंतरिक ओरेकल JVM के माध्यम से पीएल/एसक्यूएल से रिपॉजिटरीज तक पहुंचते हैं, जिस पर ओरेकल उदाहरण रहते हैं। एसवीएन कमांड के परिणाम एक्सएमएल में प्राप्त होते हैं और पीएल/एसक्यूएल द्वारा संसाधित मधुमक्खी से पहले पार्स किए जाते हैं। सबवर्सन एक्सेस करना इस तरह से बार-बार उपयोग के लिए बहुत ही सक्षम नहीं है।

वर्तमान में, हम क्या कर प्रत्येक में डेटाबेस तालिकाओं में सबवर्सन मेटाडाटा भंडारण है सबवर्सन खजाने में प्रतिबद्ध (सबवर्सन हुक के माध्यम से)। हम प्रत्येक सबवर्जन लेनदेन के लिए लॉग जानकारी निकालते हैं और इसे कुछ ऑरैकल टेबल में रखते हैं। हम फिर सामान्य एसक्यूएल प्रश्नों के साथ सबवर्जन मेटाडेटा प्राप्त करने में सक्षम हैं।

क्या पीएल/एसक्यूएल से सबवर्जन तक पहुंचने के बेहतर तरीके हैं?

+0

मेरे पिछले नियोक्ता में, हमने इसे ठीक उसी तरह किया। (यानी, हमने एक हुक का उपयोग करके ऑरैकल में सबवर्सन मेटाडाटा डाला।) –

उत्तर

2

यदि आप ओरेकल के जावा जेवीएम का उपयोग करते हैं, तो आप आदेशों को निष्पादित करने के लिए ऑपरेटिंग सिस्टम में खोलने के बजाय, जावा से नेटिवली से एसवीएन सर्वर के साथ संवाद करने के लिए SVNKit का उपयोग करने का प्रयास कर सकते हैं।

+0

वर्तमान में, जावा यूनिक्स शैल और पीएल/एसक्यूएल के बीच केवल एक पाथथ्रू है। एसवीएनकिट के साथ, मुझे जावा में पुन: उत्पन्न करना होगा जो मुझे परिणाम देने और पीएल/एसक्यूएल में वापस जाने से पहले एक नई डेटा संरचना को परिभाषित करने के लिए svn कमांड कर रहा है। लाभ के बारे में निश्चित नहीं है। – Bergeroy

+0

मैं पीएल/एसक्यूएल और एसवीएनकिट के बीच इंटरफेस को भी परिभाषित कर सकता हूं लेकिन मुझे यकीन नहीं है कि एकल संशोधन लॉग प्राप्त करने के लिए आवश्यक एकाधिक संदर्भ परिवर्तन एक एक्सएमएल को पार्स करने से अधिक प्रदर्शनशील होंगे। मैं इसे आज़मा सकता हूं। – Bergeroy

+0

यह सिर्फ आपके लिए जो भी काम करता है उस पर निर्भर करता है। मैं लगभग हमेशा एक मूल समाधान खोजने की कोशिश करता हूं, और फिर मूल समाधान कमांड लाइन चीजों को चलाने के लिए वापस आ जाता है यदि मूल समाधान अनावश्यक साबित होता है। –

2

मुझे लगता है कि मूल प्रवाह समझ में आता है। मैं यह देखने के लिए प्रयोग करने की सिफारिश करता हूं कि वास्तव में प्रदर्शन की बाधाएं कहां हैं और फिर वहां से ले जाएं। उदाहरण के लिए, क्या यह पीएल/एसक्यूएल से ओरेकल जेवीएम तक पार हो रहा है? क्या यह svn कमांड निष्पादित करने के लिए JVM खोल रहा है? क्या यह एसवीएन राउंड ट्रिप है? क्या यह एक्सएमएल का विश्लेषण है?

मान लें, उदाहरण के लिए, यह SVN राउंड ट्रिप है। हो सकता है कि आप ओरेकल मशीन पर एक प्रक्रिया कर सकें जो एसवीएन सर्वर से जवाब कैश करता है ताकि कभी-कभी राउंड ट्रिप से बचा जा सके? शायद svn दौर यात्रा async हो सकता है?

लेकिन, जैसा कि मैंने कहा, आप को पता है जहां टोंटी है की जरूरत है।

1

मैं भी एक एपीआई के लिए देख रहा हूँ सबवर्सन और Oracle integerate करने के लिए। मुझे ओरेकल पीएल/एसक्यूएल ऑब्जेक्ट्स (प्रक्रियाओं, पैकेज) को सबवर्जन में खींचने में सक्षम होना चाहिए और फिर ऑब्जेक्ट्स में बदलाव किए जाने के बाद इसे ओरेकल डेटाबेस में उन ऑब्जेक्ट्स पर लागू किया जाना चाहिए।

+1

पीएल/एसक्यूएल ऑब्जेक्ट्स खींचने के लिए, all_source व्यू को क्वेरी करें। उन्हें वापस धक्का देने के लिए, उपversण में पोस्ट-प्रतिबद्ध हुक पर विचार करें। सावधान मैपिंग करना होगा ताकि आप यह बता सकें कि किसी दिए गए फ़ाइल को किस स्कीमा में संकलित किया जाना चाहिए। –

1

एक और समाधान सॉफ्टवेयर है जो ओरेकल और SVN के बीच रहता है और सिंक्रनाइज़ करता स्रोतों के साथ PL/SQL का प्रयोग है।

यहां इन कार्यक्रमों में से एक है जिसे क्रॉन द्वारा शुरू किया जा सकता है: https://sourceforge.net/projects/dbcode-svn-sync/

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