2011-04-15 19 views
5

मुझे एक वेब एप्लिकेशन के लिए एक मॉड्यूल बनाने के लिए कहा गया है, जिसका उपयोग स्टैंड स्टैंड वेबसाइट के रूप में भी किया जाएगा। चूंकि यह मामला है, इसलिए मैं एक अलग डेटाबेस का उपयोग करना चाहता था, और सोच रहा था कि एक डेटाबेस में टेबल रखने का कोई तरीका था, तो किसी अन्य डेटाबेस में "पॉइंटर" बनें।किसी अन्य डेटाबेस में किसी तालिका का उपयोग करना

उदाहरण के लिए, मैं डेटाबेस DB1 और डीबी 2

DB1 तालिका उन है है, तो मैं db2.users db1.users को इंगित करना चाहते हैं।

मैं जानता हूँ कि मैं सेटअप चलाता सकता है और यह है कि क्या दो अलग टेबल सिंक करने के लिए नहीं है, लेकिन लगता है कूलर :)

संपादित

तो मेरी कोड में मैं एसक्यूएल इस तरह के प्रयोग कर रहा हूँ

select * from users 
के रूप में

अब, डेटाबेस स्तर पर, मैं चाहता हूं कि "उपयोगकर्ता" वास्तव में db1.users हो। फिर, यदि मैं चाहता हूं, तो मैं उपनाम/सूचक को हटा सकता हूं और "उपयोगकर्ताओं से * चुनें" वर्तमान डेटाबेस में उपयोगकर्ता तालिका को इंगित करेगा। मुझे लगता है कि मैं जो खोज रहा हूं वह एक "वैश्विक उपनाम" चीज है।

+0

मैं पूरी तरह से समझ नहीं पा रहा हूं कि आप क्या पूछ रहे हैं, क्या आप थोड़ा और विशिष्ट हो सकते हैं? – Khez

+0

मैंने बेहतर व्याख्या करने की कोशिश की है (प्रश्न देखें) –

+0

क्या आप सिर्फ 'mysql_select_db (' db2 ') नहीं कर सकते;/* प्रश्न */mysql_select_db ('डीबी 1'); '? – Khez

उत्तर

4

federated storage engine आपके द्वारा मांगी गई सुविधा के समान कुछ प्रदान करता है। और यदि आपके डेटाबेस एक ही डेटाबेस सर्वर पर हैं, तो संघीय भंडारण enging मुझे थोड़ा अधिक की तरह लगता है। आप इसके बजाय create a view करना चाह सकते हैं।

डीबी 1 उपलब्ध नहीं होने पर दोनों विधियां उपयोगी नहीं होंगी। चूंकि Emmerman पहले ही बताता है, यदि आप डीबी 1 अनुपलब्ध होने के मामले के लिए तैयार करना चाहते हैं तो आपको डेटा को डीबी 2 में स्टोर करने की आवश्यकता है।

+0

मुझे लगता है कि आप मेरी बात याद करते हैं। मैं मॉड्यूल से अकेले खड़े होने के लिए डेटाबेस स्तर पर कोड की एक पंक्ति को बदलने में सक्षम होना चाहता हूं। इसलिए जब मैं "उपयोगकर्ताओं से * चुनता हूं" मैं उपनाम को हटा सकता हूं और db2 –

+0

में "उपयोगकर्ता" नामक एक टेबल बना सकता हूं, तो क्या आप उत्तर संपादित करते हैं? यह सबसे नज़दीकी तरीका है जिसे मैं ढूंढ सकता था जिसे मैं ढूंढ रहा था धन्यवाद :) –

6

बस इसे किसी अन्य डेटाबेस से सीधे उपयोग करें?

SELECT ... FROM `db1`.`users` LEFT JOIN `db2`.`something` 
+0

वैसे डीबी 1 आवश्यक रूप से उपलब्ध नहीं हो सकता है जब मॉड्यूल स्टैंड स्टैंड अकेले वेबसाइट बन जाए, इसलिए मैं इस विधि से बचने के लिए –

+0

फिर आपको उस तालिका की प्रतिलिपि की आवश्यकता होगी, न कि 'पॉइंटर' (जो भी इसका मतलब है)। – Emmerman

+0

हां, लेकिन मैं ऐप में प्रत्येक एसक्यूएल स्टेटमेंट को बदलना नहीं चाहता हूं। तो चुनें ... उपयोगकर्ताओं से डीबी स्तर पर बिंदु से db1.users डेटाबेस में उपयोगकर्ता तालिका में बदल दिया जाता है। –

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