2009-03-10 22 views
38

मैं एक नई परियोजना शुरू करने जा रहा हूं जिसमें एक बड़ा डेटाबेस होना चाहिए।बड़ी डेटा मात्रा के लिए डेटाबेस पसंद?

तालिकाओं की संख्या बड़ी नहीं होगी (< 15), अधिकांश डेटा (99%) एक बड़ी तालिका में निहित होगा, जो केवल लगभग सम्मिलित/पढ़ा जाता है (कोई अपडेट नहीं)।

कि एक तालिका में डेटा की अनुमानित मात्रा एक दिन500,000 से बढ़ने की जा रही है रिकॉर्ड, और हम कम से कम 1 साल उनमें से रखना चाहिए विभिन्न रिपोर्टों ऐसा करने में सक्षम होने के लिए।

वहां केवल पढ़ने के लिए (केवल पढ़ने के लिए) को डेटाबेस को बैकअप/विफलता के रूप में दोहराया जाना चाहिए, और शायद चरम समय में ऑफ़लोडिंग रिपोर्ट के लिए।

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

उत्तर

25

मैं ऐसा माहौल हम 100K-2M देख रहे हैं प्रति दिन नई पंक्तियों में PostgreSQL का उपयोग किया है, सबसे एक एकल तालिका में जोड़ा। हालांकि, उन पंक्तियों को नमूने में कम किया जाता है और फिर कुछ दिनों के भीतर हटा दिया जाता है, इसलिए मैं ~ 100M से अधिक पंक्तियों के साथ दीर्घकालिक प्रदर्शन के बारे में बात नहीं कर सकता।

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

मैं केवल छोटे डेटासेट के लिए ओरेकल, और MySQL उपयोग नहीं किया है, इसलिए मैं प्रदर्शन की तुलना नहीं कर सकते। लेकिन PostgreSQL बड़े डेटासेट के लिए ठीक काम करता है।

5

Google का BigTable database और Hadoop दो डेटाबेस इंजन हैं जो बड़ी मात्रा में डेटा संभाल सकते हैं।

+1

वे SQL डेटाबेस नहीं हैं। वे wrt रिपोर्टिंग किराया कैसे करते हैं? – Marko

+0

मुझे इन दो इंजनों को प्रोग्रामिंग में प्रत्यक्ष अनुभव नहीं है, लेकिन जो मैं ऑनलाइन पेपर पढ़ने से इकट्ठा करता हूं, उससे बड़े डेटाबेस से विशिष्ट डेटा चुनने पर एसक्यूएल पर इसका लाभ होता है। मैं घर पर अपने हार्ड ड्राइव पर कागजात देखता हूं और देखता हूं कि मैं इसे यहां पोस्ट कर सकता हूं या नहीं। – MrValdez

+0

क्या बिगटेबल का उपयोग Google AppEngine के बाहर किया जा सकता है? – Thilo

4

हम वास्तव में विशाल डेटाबेस (30 से अधिक वर्षों के लिए डेटा रखते हुए) के लिए Firebird का उपयोग करते हैं और यह बहुत अच्छी तरह से स्केल करता है।

इसके बारे में सबसे अच्छा यह है कि आपके पास कॉन्फ़िगर करने के गुण हैं, लेकिन i.e. ओरेकल के विपरीत आप इसे इंस्टॉल करते हैं और इससे पहले कि आप इसका उपयोग कर सकें, इसे कॉन्फ़िगर करना प्रारंभ करने के बिना बहुत अच्छी तरह से काम करता है।

6
गूगल बिगटेबल के बारे में देखते हैं में कुछ रोचक अंक

...

बिगटेबल बनाम डीबीएमएस

  • फास्ट क्वेरी दर
  • नहीं शामिल, कोई एसक्यूएल समर्थन, कॉलम-ओरिएंटेड डेटाबेस
  • कई सामान्यीकृत टेबल रखने के बजाय एक बिगटेबल का उपयोग करता है
  • पारंपरिक दृश्य में 1NF में भी नहीं है
  • ऐतिहासिक प्रश्नों का समर्थन करने के लिए डिज़ाइन किया गया टाइमस्टैम्प फ़ील्ड => यह वेबपृष्ठ कल जैसा दिखता था?
  • डेटा संपीड़न आसान -rows विरल

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

+1

Google BigTable प्रस्तुति अब उपलब्ध नहीं है ... – chutsu

8

क्या आपके पास "The Data Warehouse Toolkit" की एक प्रति है?

सुझाव है कि निम्नलिखित कार्य करना है।

  1. अलग तथ्यों (औसत दर्जे का, आंकिक) आयाम जो अर्हता या उन तथ्यों का आयोजन से मान। एक बड़ी मेज वास्तव में सबसे अच्छा विचार नहीं है।यह एक तथ्य सारणी है जो डिजाइन को हावी करती है, साथ ही तथ्यों को "स्लाइसिंग और डाइसिंग" की अनुमति देने के लिए कई छोटी आयाम तालिकाओं को भी प्रभावित करती है।

  2. सरल फ्लैट फ़ाइलों में तथ्यों रखें जब तक आप एसक्यूएल शैली रिपोर्टिंग करना चाहते हैं। डेटाबेस बनाएं और बैक अप न लें। फाइलें बनाएं और बैक अप लें; एसक्यूएल से केवल रिपोर्ट के लिए डेटा बेस लोड करें।

  3. जहां संभव हो सारांश या विश्लेषण के लिए अतिरिक्त datamarts पैदा करते हैं। कुछ मामलों में, आपको पूरी चीज़ को डेटाबेस में लोड करने की आवश्यकता हो सकती है। यदि आपकी फाइलें आपके टेबल डिज़ाइन को प्रतिबिंबित करती हैं, तो सभी डेटाबेस में थोक लोडर टूल होते हैं जो फ़ाइलों से एसक्यूएल टेबल को पॉप्युलेट और इंडेक्स कर सकते हैं।

+0

वर्तमान में, मैंने अपने डेटा को केवल फाइलों में संग्रहीत किया है और हर रोज लगभग 50k नई प्रविष्टियां होंगी। अब मैं रिपोर्टिंग के लिए इस डेटा का उपयोग करना चाहता हूं। अधिकतर रिपोर्टिंग क्वेरी एकत्रित की जाएगी क्योंकि इसमें केवल 3 से 4 फ़ील्ड होते हैं इसलिए कोई भी शामिल नहीं होता .. आप क्या सुझाव देते हैं ?? – mahesh

6

डेटा की मात्रा (प्रति वर्ष 200 मीटर रिकॉर्ड) वास्तव में बड़ी नहीं है और किसी भी मानक डेटाबेस इंजन के साथ जाना चाहिए।

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

+0

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

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