बाहरी डेटाबेस को दृश्य के लिए कैसे उपलब्ध कराया जाए?


8

Drupal में बाहरी डेटाबेस का उपयोग करने के बारे में यहाँ और अन्य स्थानों पर बहुत चर्चा है। जो मुझे पता चला है, वह है:

  • डेटाबेस तालिका में डेटा के साथ काम करने का सबसे अच्छा तरीका दृश्य मॉड्यूल का उपयोग करना है। मैंने इसे स्थापित किया है और इसका उपयोग करना शुरू कर दिया है और पाया है कि यह उस तालिका के साथ काम करने के लिए बहुत अच्छा है जिसे मैंने साइट के डेटाबेस में जोड़ा है।
  • द्रुपल द्वारा बनाई गई तालिका के साथ काम करने के लिए दृश्य प्राप्त करने का आसान तरीका डेटा मॉड्यूल के साथ है। यह मॉड्यूल साइट डेटाबेस में किसी भी तालिका का व्यवहार करता है जो ड्रुपल द्वारा "अनाथ तालिका" के रूप में उपयोग में नहीं है और इसे एक बटन के क्लिक पर "अपनाया" जा सकता है।
  • मॉड्यूल "टेबल विजार्ड" स्पष्ट रूप से ऐसा करने का एक तरीका प्रदान करता है जो कि साइट के डेटाबेस में नहीं है। लेकिन वह मॉड्यूल Drupal 7 के लिए उपलब्ध नहीं है।
  • "डेटाबेस सेटिंग्स पर" खंड में "सेटिंग.फैप" फ़ाइल में अतिरिक्त डेटाबेस को परिभाषित करने के बारे में विस्तृत प्रलेखन है कि साइट किसके साथ काम कर सकती है। लेकिन जब एक डेटाबेस को इस तरह से परिभाषित किया जाता है, तो इसकी तालिकाएं डेटा मॉड्यूल में अनाथ तालिकाओं की सूची में दिखाई नहीं देती हैं।

मैंने अपनी एक साइट की "settings.php" फ़ाइल में डेटाबेस परिभाषा में जो परिवर्तन किया है वह है:

$databases = array ( 'default' => array ('default' => array ( 'database' => 'db_local', 'username' => 'db_local', 'password' => '_________', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ), 'extra' => array ('default' => array ( 'database' => 'db__extra', 'username' => 'db_admin', 'password' => '_________, 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ), );

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

  1. सबसे अच्छा, अगर यह संभव है: यह पता करें कि "सेटिंग.फैप" में परिभाषित अतिरिक्त डेटाबेस में तालिकाओं को पहचानने के लिए डेटा मॉड्यूल प्राप्त करने का एक तरीका है, इसलिए यह उन्हें अपना सकता है।
  2. सभी साइटों को एक डेटाबेस का उपयोग करने की अनुमति देने के लिए तालिका उपसर्गों का उपयोग करें।
  3. मॉड्यूल " फ़ॉरेना रिपोर्ट्स " मुझे वही लगता है जो मुझे चाहिए, लेकिन जब मैंने इसे स्थापित किया, तो मैं इसे काम नहीं कर सका। मैंने २४ unless५६४५ का अंक जमा किया और जब तक उस समस्या का समाधान नहीं हो जाता, तब तक वह और कुछ नहीं कर सकता।
  4. "Settings.php" में परिभाषित अतिरिक्त डेटाबेस तक दृश्य पहुंच प्रदान करने के लिए मेरा अपना मॉड्यूल लिखें।
  5. तालिका विज़ार्ड के साथ Drupal 6 स्थापित करें और मेरी बाहरी तालिका देखने के लिए दृश्य प्राप्त करने के लिए इसका उपयोग करें, और फिर किसी तरह उस का परिणाम लें और इसे Drupal 7 में डाल दें (यह कुछ पदों में सुझाया गया है।)
  6. Https://drupal.stackexchange.com/a/3321/45991 में प्रक्रिया का पालन करें , जो एक पैच को स्थापित करने के साथ शुरू होता है और लगता है कि मुझे अपना मॉड्यूल बनाने की भी आवश्यकता है।
  7. मैंने मॉड्यूल फीड्स, फीड्स एसक्यूएल, व्यूज एक्सएमएल बैकेंड और माइग्रेट को भी देखा है, लेकिन उनमें से कोई भी यह नहीं कहता है कि वे एक्सटर्नल डीबी को व्यूज से कनेक्ट कर सकते हैं। क्या मैं कुछ भूल रहा हूँ? क्या उनमें से एक सही समाधान है?

विकल्प 2 व्यावहारिक नहीं है, क्योंकि इसके परिणामस्वरूप सैकड़ों टेबल के साथ एक विशाल डेटाबेस होगा जिसे प्रबंधित करना बहुत मुश्किल होगा। मैं Drupal पर आरंभ करने में बहुत प्रगति कर रहा हूं, लेकिन मैं 4, 5 या 4 के कार्य तक महसूस नहीं कर रहा हूं। क्या विकल्प 1 के काम जैसी किसी चीज की कोई संभावना है? या क्या मेरे अपने मॉड्यूल को लिखने के लिए साइट डेटाबेस के बाहर तालिका के साथ काम करने के लिए दृश्य प्राप्त करने का कोई अन्य तरीका है?

दो अतिरिक्त विवरण: 6,000 से अधिक पंक्तियों और लगभग 20 स्तंभों के साथ मुझे पहली तालिका पर काम करने की आवश्यकता है। पेज कंटेंट के लिए इससे जुड़ी जानकारी को छोड़कर, डेटाबेस में साइट एक्सेस के लिए आगंतुकों को देने का कोई इरादा नहीं है।

आपकी सहायता के लिए धन्यवाद।

जवाबों:


2

मुझे लगता है कि फोरेना मॉड्यूल वास्तव में वही करता है जो आपको चाहिए । आपका सेटअप समस्या केवल एक समर्थन अनुरोध है जो मुझे लगता है, न कि कुछ ऐसा है जिसे "फिक्स" की आवश्यकता है। आपके द्वारा उस समाधान को प्राप्त करने के बाद, आपके पास उसके विचारों के एकीकरण का भी हां या नहीं का उपयोग करने का विकल्प होगा।

आपके द्वारा बनाए गए फोर्ना मुद्दा बहुत अच्छी तरह से प्रलेखित है (महान काम!)। लेकिन कहीं भी यह आपके द्वारा दी गई अनुमतियों के बारे में कुछ भी कहता है (जो मुझे विश्वास दिलाता है कि आप कुछ आवश्यक अनुमतियों को याद कर रहे हैं)। अतः यहाँ यह पता करने का प्रयास किया जा रहा है कि:

  • क्या आप संक्षेप में बता सकते हैं कि आपको कौन सी (आवश्यक) फोरेना संबंधित अनुमति दी गई है?

  • Forena के साथ आने वाले सेटअप गाइड में आवश्यक Forena अनुमतियों को समझाया गया है ? FYI करें: यहाँ (इसका हिस्सा है) का एक उद्धरण है:

    फ़ॉरेना ने बहुत सी ग्रैन्युलैरिटी की अनुमति दी है क्योंकि यह संबंधित प्राधिकरणों को रिपोर्ट करने की बात आती है, मानक ड्रुपल प्रशासन सुविधाओं का उपयोग करके भूमिकाओं को अनुमति प्रदान करने के लिए। Forena से संबंधित Drupal अनुमतियों की सूची जो प्रदान की जा सकती है, पहली बार में थोड़ी भारी हो सकती है। क्योंकि प्रत्येक परिभाषित डेटा स्रोत के लिए 3 प्रविष्टियाँ हैं, और वेनिला फोर्ना पहले से ही 3 डेटा स्रोतों के साथ आती है।

    इस गाइड को अपनी साइट पर पुनः प्राप्त करने के लिए, बस /reports/help.setup पर जाएँ

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

यह भी ध्यान दें कि संपूर्ण डेटा स्रोत के स्तर पर अनुमतियों के अलावा, आपके पास विशिष्ट डेटा ब्लॉक (= कस्टम SQL क्वेरी) के लिए आवश्यक अनुमतियों को और परिष्कृत करने का विकल्प है। ऐसा करने के लिए, SQL कथन के भीतर ऐसी आवश्यक (Drupal) अनुमतियों को निर्दिष्ट करें (वाक्य रचना विवरण Forena गाइड में शामिल हैं)। इसके लिए एक विशिष्ट usecase, इसमें संवेदनशील डेटा वाले स्तंभों तक पहुंच सुरक्षित करना है।

प्रकटीकरण: मैं इस मॉड्यूल का सह- संरक्षक
हूं , मुझे आशा है कि यह स्व-प्रचार पर साइट की नीति का उल्लंघन नहीं करता है ।


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

प्रगति को पढ़कर बहुत अच्छा लगा! यह किसी भी तरह से मेरे उत्तर के "डाउनवोट" की भरपाई करता है ... FYI करें: मैंने भी इस मुद्दे की कतार के माध्यम से जवाब दिया। तो अब जब "यह समस्या हल हो गई है", तो क्या इसका मतलब यह है कि आप फ़ॉरेना को वास्तव में "अपने प्रश्न का उत्तर" मानते हैं (जो कि ओपी के बुलेट एनआर 3 में अभी तक नहीं था)? FYI करें: मैं अपने उत्तर को यहाँ संक्षेप में बताने की कोशिश करूँगा कि "उन अनुमतियों को मूल रूप से क्यों रोक दिया गया", जो एक अच्छा अतिरिक्त प्रश्न है!
पियरे.व्रीन्स

मैं वह नहीं था जिसने आपके जवाब को डाउन-वोट किया था। मैंने अब आपको <u> </ u> उत्तर के रूप में स्वीकार कर लिया है और इसे वोट दिया है (जो दुर्भाग्य से केवल इसे शून्य पर लौटाता है)।
न्यूसाइट्स

हम्म, मैं @ नीस को नीचा नहीं मान रहा था, वास्तव में मैंने नीचे के साथ जीना सीख लिया है। मुझे व्यक्तिगत रूप से सामान्य रूप से नीचा दिखाना पसंद नहीं है, और मैं उनमें से किसी को भी अनदेखा करता हूं जहां किसी भी तरह उन्हें समझाने के लिए कोई टिप्पणी नहीं है। लेकिन निश्चित रूप से "upvoting", और "स्वीकार करना" बहुत सराहना की जाती है। और निश्चित रूप से यह जानने का एक और Drupal उपयोगकर्ता है जो लगता है कि अब Forena की खोज कर चुका है, जाने का रास्ता! जहाँ उचित हो (काम पर समर्थन देखने के लिए भी ...) फाइल करना (सपोर्ट?) जारी करें।
पियरे.विरेंस

2

मैंने इसे अलग-अलग तरीकों से सफलतापूर्वक किया है:

वर्चुअल टेबल बनाने के लिए SQL व्यू का उपयोग करें, db_localजिसमें संबंधित टेबल को संदर्भित किया गया है db__extraबनाने की क्वेरी कुछ इस तरह दिखाई देगी:

USE db_local; CREATE VIEW some_table AS SELECT * FROM db__extra.some_table;

फिर आप इस SQL ​​दृश्य का उल्लेख कर सकते हैं जैसे कि यह आपके Drupal डेटाबेस में एक मूल तालिका थी, और आपको सेटिंग में सभी बाह्य डेटाबेस को जोड़ने की आवश्यकता नहीं है। ध्यान दें कि यह डेटा मॉड्यूल के साथ संगत नहीं हो सकता है ( https://www.drupal.org/node/1973806 देखें ), लेकिन आपको क्रियान्वयन द्वारा Drupal Views मॉड्यूल के लिए SQL दृश्य का वर्णन करने में सक्षम होना चाहिए hook_views_data(), और डेटा मॉड्यूल का उपयोग करना बंद करना चाहिए ।

यहाँ एक और संभावना है: Drupal को reb {d___extra.some_table में लिखने के लिए ड्रुपल को ट्रिक करने के लिए चयनात्मक तालिका उपसर्गों का उपयोग करें। यह आपके Drupal टेबल को प्रीफ़िक्स करने जैसा नहीं है।

आपकी $databasesसेटिंग इस तरह दिखाई देगी:

$databases = array ( 'default' => array ('default' => array ( 'database' => 'db_local', 'username' => 'db_local', 'password' => '_________', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => array( 'some_table' => 'db__extra.', ), )) );

फिर से, मुझे यकीन नहीं है कि यह डेटा मॉड्यूल के साथ संगत है, क्योंकि मैं इसका उपयोग नहीं करता हूं। लेकिन यह दृश्य के साथ काम करना चाहिए अगर आप hook_views_data()खुद को लागू करते हैं।


आप दोनों विधियों में कहते हैं कि मुझे <code> hook_views_data () </ code> लागू करने की आवश्यकता है। क्या मॉड्यूल लिखने की आवश्यकता नहीं है? किसी भी स्थिति में, मैंने आपके दूसरे तरीके में डेटाबेस परिभाषा की कोशिश की। इसने "db_extra" में तालिका को अनाथ तालिकाओं के डेटा मॉड्यूल की सूची में दिखाई नहीं दिया। अपनी पहली विधि में, मैंने आपके द्वारा सुझाई गई क्वेरी को कहाँ रखा है (यदि कस्टम मॉड्यूल में नहीं है)?
न्यूसाइट्स

यदि आप SQL दृश्य बना रहे हैं, तो आपको सीधे MySQL में एक बार CREATE VIEW क्वेरी चलाने की आवश्यकता है। इसे फिर से चलाने की जरूरत नहीं है।
लेस लिम

मुझे क्षमा करें, मुझे अभी भी समझ नहीं आया है। आप मुझे इस क्वेरी को कहाँ चलाना चाहते हैं? PhpMyAdmin में? क्या वह मुझे कुछ दे सकता है जो मैं दृश्य में उपयोग कर सकता हूं? मैंने Drupal.org पर "SQL व्यू" की खोज की और drupal.org/project/sql_views मिला , जिसका कोई प्रोडक्शन डाउनलोड नहीं है और जिसका drupal.org/node/2458947 पर doc कहता है कि मुझे एक हुक लागू करने की आवश्यकता है (जो मुझे लगता है कि लिखने का मतलब है) एक मॉड्यूल) मेरी एसक्यूएल दृश्य के बारे में दृश्य मॉड्यूल बताने के लिए। तो ऐसा लगता है कि आप जो सुझाव दे रहे हैं, उसके लिए एक मॉड्यूल लिखने की आवश्यकता है (जो कि मैं अभी तैयार नहीं हूं), और यदि नहीं, तो मुझे वह नहीं मिलता जो आप मुझे करने के लिए कह रहे हैं।
न्यूसाइट्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.