2009-11-26 13 views
6

के लिए बहुत बड़ी हैं I डेटाबेस डेटाबेस में से अधिक नहीं है इसलिए मुझे कुछ सलाह चाहिए।ये तालिकाएं SQL सर्वर या ओरेकल

पृष्ठभूमि

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

प्रश्न

  1. को देखते हुए इन तालिकाओं 'आयाम, किसी को भी एसक्यूएल सर्वर या Oracle एक व्यवहार्य विकल्प होने के लिए विचार करेंगे?

    • तालिका 1: 172 कॉलम * 32 लाख पंक्तियों
    • तालिका 2: 453 कॉलम * 7 लाख पंक्तियां
    • तालिका 3: 112 कॉलम * 13 लाख पंक्तियों
    • सारणी 4: 147 कॉलम * 25 लाख पंक्तियां
  2. डेटा के आकार को देखते हुए मुझे डेटाबेस पसंद, सर्वर कॉन्फ़िगरेशन, मेमोरी, प्लेटफॉर्म इत्यादि के बारे में क्या चिंता होनी चाहिए?

+5

पृथ्वी पर आपके पास 453 कॉलम वाली तालिका क्यों है? क्या आपकी टेबल सामान्यीकृत हैं? क्या उन्हें आगे सामान्यीकृत किया जा सकता है? –

+3

@ डोमिनिक - क्योंकि जेफरी का डेटाबेस साइबेस IQ का उपयोग कर रहा है जो "कॉलम उन्मुख डेटाबेस" है। कॉलम उन्मुख डेटाबेस का बिंदु यह है कि वे "सामान्यीकरण" की पूरी धारणा को अस्वीकार करते हैं। कम से कम, सामान्यीकरण के रूप में यह संबंध डेटाबेस में समझा जाता है। – APC

+0

बस स्पष्ट होने के लिए - क्या आप मौजूदा स्कीमा को नए डेटाबेस में पोर्ट करना चाहते हैं? यदि हां, तो क्यों? यदि आपको ओएलटीपी के साथ समस्याएं आ रही हैं तो यह डीबीएमएस उत्पाद की बजाय टेबल डिज़ाइन का मामला होने की संभावना है। यदि आप हमें अधिक पृष्ठभूमि देते हैं तो हम आपको बेहतर सलाह दे सकते हैं। विशेष रूप से, आप क्या समस्याएं अनुभव कर रहे हैं? ओरेकल या एमएसएसक्यूएल में माइग्रेट करने से आपको क्या फायदे मिलेंगे? – APC

उत्तर

7

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

+0

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

+0

* कॉलम उन्मुख * डेटाबेस के लिए Sybase IQ के रूप में यह कोई समस्या नहीं है। –

+0

यह "अंगूठे का नियम" है (इस प्रकार: हमेशा अपवाद होते हैं, उदाहरण के लिए कैमरून का मामला) कि यदि आपकी तालिका में इतने सारे कॉलम हैं (उदा।> 30) तो यह शायद एक से अधिक प्रकार की इकाई का प्रतिनिधित्व करता है। उदाहरण के लिए, जनगणना डेटा में मुझे आश्चर्य होगा कि क्या वे सभी कॉलम हमेशा हर व्यक्ति के लिए शून्य नहीं हैं? शायद ऐसे लोगों के सबसेट हैं जिनके लिए कुछ कॉलम लागू नहीं हैं? यदि ऐसा है तो इन्हें अलग-अलग तालिकाओं में ले जाया जा सकता है। मैं यह नहीं कह रहा कि यह होना चाहिए, बस एक सुझाव। –

2
उपयुक्त आकार हार्डवेयर और मैं/हे सबसिस्टम साथ

अपने मांगों को पूरा करने के लिए दोनों काफी पर्याप्त हैं - Wihlst कॉलम का बहुत कुछ है पंक्ति में गिना जाता है वास्तव में बहुत कम हैं - हम नियमित रूप से डेटासेट कि अरबों में व्यक्त कर रहे हैं का उपयोग करें, लाखों नहीं (बस इसे SQL 2000 पर आज़माएं :) :)

यदि आप अपने उपयोग और I/O आवश्यकताओं को जानते हैं, तो अधिकांश I/O विक्रेता आपके लिए हार्डवेयर चश्मे में इसका अनुवाद करेंगे। मेमोरी, प्रोसेसर आदि फिर से वर्कलोड पर निर्भर हैं जो केवल आप मॉडल कर सकते हैं।

+0

धन्यवाद, मुझे लगा कि वर्कलोड एक प्रकार का व्यक्तिपरक था लेकिन वैसे भी इसे बाहर फेंक दिया ... बस मामले में! –

5

यह वास्तव में कॉलम में क्या है इस पर निर्भर करता है। यदि बहुत सारे बड़े VARCHAR कॉलम हैं - और वे अक्सर निकट क्षमता तक भर जाते हैं - तो आप कुछ समस्याओं के लिए हो सकते हैं। यदि यह सभी पूर्णांक डेटा है तो आपको ठीक होना चाहिए।

453 * 4 = 1812  # columns are 4 byte integers, row size is ~1.8k 
453 * 255 = 115,515 # columns are VARCHAR(255), theoretical row size is ~112k 

अंगूठे का नियम यह है कि पंक्ति का आकार डिस्क ब्लॉक आकार से अधिक नहीं होना चाहिए, जो आमतौर पर 8k होता है। जैसा कि आप देख सकते हैं, आपकी बड़ी तालिका इस संबंध में कोई समस्या नहीं है यदि इसमें पूरी तरह से 4-बाइट पूर्णांक होते हैं लेकिन यदि इसमें 255-चार VARCHAR कॉलम होते हैं तो आप सीमा से अधिक हो सकते हैं। यह 8k सीमा SQL सर्वर में एक कठिन सीमा के रूप में प्रयोग की जाती है, लेकिन मुझे लगता है कि इन दिनों यह केवल एक नरम सीमा और प्रदर्शन दिशानिर्देश है।

ध्यान दें कि VARCHAR कॉलम आवश्यक रूप से आपके द्वारा निर्दिष्ट आकार के अनुरूप स्मृति का उपभोग नहीं करते हैं। यह अधिकतम आकार है, लेकिन वे केवल उतना ही उपभोग करते हैं जितना उन्हें चाहिए। यदि VARCHAR कॉलम में वास्तविक डेटा हमेशा 3-4 वर्ण लंबा होता है तो आकार पूर्णांक स्तंभों के समान होगा चाहे आप उन्हें VARCHAR (4) या VARCHAR (255) के रूप में बनाएंगे।

सामान्य नियम यह है कि आप पंक्ति का आकार छोटा होना चाहते हैं ताकि प्रति डिस्क ब्लॉक में कई पंक्तियां हों, इससे तालिका को स्कैन करने के लिए आवश्यक डिस्क पढ़ने की संख्या कम हो जाती है। एक बार जब आप 8k से ऊपर हो जाते हैं तो आपके पास प्रति पंक्ति दो पढ़ते हैं।

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

पंक्तियों की संख्या जिनके बारे में आप बात कर रहे हैं, उन्हें कोई समस्या नहीं होनी चाहिए, मान लें कि आपके पास पर्याप्त हार्डवेयर है।

+0

बहुत उपयोगी जवाब! धन्यवाद –

1

Oracle limitations

SQL Server limitations

आप SQL सर्वर पर करीब हो सकता है, क्या डेटा प्रकार आपको लगता है कि 453 स्तंभ तालिका में है (पंक्ति सीमा प्रति बाइट्स ध्यान दें, लेकिन यह भी फुटनोट पढ़ें) पर निर्भर करता है। मुझे पता है कि आपने कहा है कि यह सामान्य है, लेकिन मैं आपके वर्कफ़्लो को देखने और कॉलम गिनती को कम करने के तरीकों पर विचार करने का सुझाव देता हूं।

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

0

क्या आपके आवेदन द्वारा अपडेट की गई सभी तालिकाओं में से सभी कॉलम हैं?

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

+0

नहीं, हम अक्सर एक समय में केवल कुछ मुट्ठी भर कॉलम अपडेट करते हैं। –

+0

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

0

एक डीबी को एक ही समय में एक परिचालन और गोदाम प्रणाली के रूप में कार्य करने के लिए पूछना अभी भी एक लंबा आदेश है। मैं परिचालन प्रणाली के लिए एसक्यूएल सर्वर या ओरेकल का उपयोग करने और रिपोर्टिंग और विश्लेषणात्मक के लिए एक अलग डीडब्ल्यू रखने पर विचार करता हूं, शायद आपके पास सिस्टम को रखना।

पंक्ति-आधारित भंडारण की प्रति पंक्ति सीमाओं के एक-पंक्ति फिट करने के लिए परिचालन पक्ष पर होने वाली कुछ तालिका पुन: डिज़ाइन और सामान्यीकरण की अपेक्षा करें।

यदि आपको डीडब्ल्यू के तेज़ अपडेट होने की आवश्यकता है, तो आप मानक (निर्धारित) ईटीएल के विपरीत EP for ETL दृष्टिकोण पर विचार कर सकते हैं।

यह देखते हुए कि आप इस के प्रारंभिक चरण में हैं, माइक्रोसॉफ्ट project Madison, जो 100s टीबी अप करने के लिए स्वत: स्केलेबल DW उपकरण है पर एक नज़र डालें। वे पहले ही कुछ प्रतिष्ठान भेज चुके हैं।

0

मैं कॉलम उन्मुख डेटाबेस से एक संबंध में स्विच करने पर बहुत सावधानी से विचार करता हूं। कॉलम उन्मुख डेटाबेस वास्तव में परिचालन कार्य के लिए अपर्याप्त हैं क्योंकि अपडेट बहुत धीमे हैं, लेकिन वे रिपोर्टिंग और व्यवसाय खुफिया समर्थन के लिए पर्याप्त से अधिक हैं।

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

+0

यह एक अच्छा विचार है, धन्यवाद। मुझे नहीं लगता कि एक स्तंभ-उन्मुख डेटाबेस का उपयोग करने की बढ़ी हुई गति एक अधिक बार उपयोग किए जाने वाले डेटाबेस का उपयोग करने की दक्षता (अकेले टूलसेट में धीमी गति गति का उल्लेख नहीं करने के लिए) को ट्रम्प कर देगी। –

1

अन्य उत्तर मुझे लगता है कि मैं क्या सलाह देते हैं में अपनी टिप्पणी के आधार पर है:

1) पृथक जो डेटा वास्तव में बनाम जो डेटा और अधिक या कम ही (या बार बार पढ़ा जाता है) 2 अद्यतन किया जाता है) अपडेट किए गए डेटा को आईडी पर बड़ी तालिका में शामिल करने के लिए अलग-अलग टेबल पर ले जाएं (बड़ी कॉलम से उन कॉलम को हटाएं) 3) छोटे, अधिक रिलेशनल टेबल 4 के विरुद्ध अपने OLTP लेन-देन करें 4) बैक अप को हुक करने के लिए आंतरिक जॉइन का उपयोग करें आवश्यक होने पर डेटा पुनर्प्राप्त करने के लिए बड़ी टेबल।

जैसा कि अन्य ने ध्यान दिया है कि आप डीबी को एक ही समय में ओएलटीपी और ओलाप दोनों करने की कोशिश कर रहे हैं और यह मुश्किल है। किसी भी परिदृश्य के लिए सर्वर सेटिंग्स को अलग-अलग tweaked की जरूरत है।

या तो SQL सर्वर या ओरेकल काम करना चाहिए। मैं जनगणना डेटा का भी उपयोग करता हूं और मेरी गिगेंटो टेबल में लगभग 300+ कॉलम हैं। मैं SQL सर्वर 2005 का उपयोग करता हूं और यह शिकायत करता है कि यदि सभी कॉलम उनकी क्षमता से भरे जाए तो यह रिकॉर्ड के लिए अधिकतम संभव आकार से अधिक हो जाएगा। हम ओलाप फैशन में हमारे जनगणना डेटा का उपयोग करते हैं, इसलिए इतने सारे कॉलम होने का इतना बड़ा सौदा नहीं है।

+0

दिलचस्प, धन्यवाद! –

0

साइबेस के पास आरएपी नामक एक उत्पाद है जो आईक्यू को एएसई (उनके रिलेशनल डेटाबेस) के इन-मेमोरी इंस्टेंस के साथ जोड़ता है जिसे इस तरह की स्थितियों में मदद के लिए डिज़ाइन किया गया है।

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

अस्वीकरण: मैं साइबेस के लिए काम करता हूं लेकिन वर्तमान में एएसई/आईक्यू/आरएपी पक्ष पर काम नहीं करता हूं।

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