2011-07-28 10 views
12

में MySQL डेटाबेस का उपयोग करके मैंने देखा है कि Input Needs["DatabaseLink "] और conn = OpenSQLConnection[JDBC["MySQL(Connector/J)", "yourserver/yourdatabase"], "Username" -> "yourusername", "Password" -> "yourpassword"] का उपयोग करके गणित और MySQL डेटाबेस के बीच कनेक्शन बनाना संभव है (यदि कोई इसे आज़मा देना चाहता है)। डेटाबेस लिंक्स here का दस्तावेज़ीकरण, वैसे भी।मैथमैटिका

किसी को भी अनुभव इस तरह से मेथेमेटिका का उपयोग कर, शायद डेटाबेस में निहित डेटा का विश्लेषण करने? रहे हैं वहाँ स्पष्ट कमियां (गति, स्मृति की जरूरत है, आदि)?

+0

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

+0

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

+0

MySQL के बारे में नहीं, लेकिन यदि आप तेजी से डेटाबेस पहुंच चाहते हैं तो यह देखने लायक है [QLink] (http://science.sander.su/QLink.htm) [टोक्यो कैबिनेट] के लिए (http://www.igvita.com/ 2009/02/13/टोक्यो-कैबिनेट से बाहर-की-वैल्यू की दुकान /)। – Simon

उत्तर

7

मैं हाल ही में उपयोग डेटाबेस एक Manipulate[] तेजी लाने के लिए है ब्लॉक।

बिना डाटाबेस, 150 एमबी ASCII फ़ाइल से आवश्यक डेटा को स्मृति के लिए स्मृति में आवश्यक था। नतीजतन, Manipulate[] ब्लॉक धीमा हो गया। यह संभव है कि PackedArray[] मदद मिलेगी। मैंने इसकी जांच नहीं की।

डेटाबेस के साथ, अलग-अलग डेटासेट की पहुंच की गति एक Select[] ब्लॉक की तुलना में थोड़ा धीमी है, लेकिन स्मृति पदचिह्न लगभग 10

का एक पहलू मैं कहना चाहता हूँ इसके लिए जाना द्वारा नीचे है।

+0

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

+0

@ रॉबर्ट स्मिथ: एप्लिकेशन एयरबोर्न भूगर्भीय डेटा का क्यूसी है। एक लाइन का चयन करने के बाद, मुझे 4 ग्राफ, दो लाइन-आधारित प्लॉट और कम से कम एक पॉइंट-आधारित प्लॉट प्लॉट करने की आवश्यकता है ताकि मैं समझ सकूं कि कौन से डेटा पॉइंट कम-स्क्वायर इनवर्जन योजना से निकलते हैं। मैनिपुलेट [] ब्लॉक लाइनों पर है, फिर उन पंक्तियों में से प्रत्येक में स्टेशनों पर, 1 -> 37, फिर 1 -> (5000 तक)। पूरा एप्लिकेशन डाटाबेस पर पूर्णांक का एक समूह लिख देगा जो इंगित करता है कि कौन से चैनल रखा जाना चाहिए। मैं एक स्क्लाइट डेटाबेस का उपयोग कर रहा हूँ। एकमात्र असहाय पहलू गणित में डीबी लिख रहा था। – dwa

+0

आपकी टिप्पणी के बाद, ऐसा लगता है कि अपेक्षाकृत गहन कार्य के लिए गणित का उपयोग करना बहुत बुरा नहीं है। आपका बहुत बहुत धन्यवाद! –

10

मैंने माइस्क्लुएल के साथ DatabaseLink` का उपयोग नहीं किया है, लेकिन मैंने इसे ओरेकल, एसक्यूएल सर्वर और एचएसक्यूएलडीबी के साथ बड़े पैमाने पर उपयोग किया है। मेरे अधिकांश DatabaseLink` उपयोग विंडोज पर मैथमैटिका संस्करण 6 से 8 पर किया गया है। मैंने इसे पढ़ने और लिखने दोनों के लिए इस्तेमाल किया है, कभी-कभी बहुत बड़े डेटा सेट के साथ। मेरा अनुभव यह रहा है कि सुविधा अपेक्षित के रूप में काम करती है। मैं प्रदर्शन या स्मृति से जुड़े किसी असामान्य परिस्थितियों में नहीं चला था। मैं आपको उम्मीद करता हूं कि आप गणित में एसक्यूएल एक्सेस को अन्य भाषाओं में जो अनुभव करते हैं उससे तुलनीय होने के लिए। विशेष रूप से, यह जावा का उपयोग करने की तरह बहुत अधिक प्रदर्शन करता है - संभवतः क्योंकि मैथमैटिका भारी भारोत्तोलन करने के लिए आंतरिक रूप से जावा का उपयोग करता है।

मैं उल्लेख करता हूं कि गणित, SQLExecute में क्वेरी निष्पादित करने के "स्पष्ट" तरीके से, पूरे परिणाम को स्मृति में सेट किया जाएगा। यदि आप मेमोरी से बाहर किए बिना बड़े परिणाम सेट के साथ काम करना चाहते हैं, तो परिणाम सेट फ़ंक्शंस SQLResultSetOpen et al पर नज़र डालें।

मैथमैटिका (एचएसक्यूएलडीबी का उपयोग करके) में एसक्यूएल उपयोग के एक बहुत ही बुनियादी उदाहरण के लिए, The best way to construct a function with memory पर मेरी प्रतिक्रिया देखें।

+0

ग्रेट उत्तर और परिणाम समूह के बारे में जानना अच्छा है (http://reference.wolfram.com/mathematica/DatabaseLink/tutorial/ResultSets.html)। वैसे, आपने गणित में और गणित का उपयोग करने के बाद अपने डेटा के साथ क्या किया? –

+0

@Robert मेरे पास उस प्रश्न का अच्छा संक्षिप्त उत्तर नहीं है। उदाहरणों में सॉफ़्टवेयर डेवलपमेंट टीम से डाटा-खनन परिचालन डेटा, या जटिल डेटाबेस मॉडल में संरचनात्मक परिवर्तनों में डेटा माइग्रेट करना शामिल है। उन उदाहरणों में, गणित का मुख्य रूप से विज़ुअलाइज़ेशन, क्रॉस-टेक्नोलॉजी डेटा एक्सेस और प्रोटोटाइप के लिए उपयोग किया जाता था। – WReach

+0

'अच्छा शॉर्ट उत्तर' देने के बारे में कोई चिंता नहीं। मैं सिर्फ आपके आवेदन से आवश्यक प्रदर्शन जानना चाहता था। बहुत बहुत धन्यवाद। –

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