2012-01-24 13 views
34

में आइटमसाइज मैं डायनामो डीबी में किसी आइटम के आकार की गणना करने की कोशिश कर रहा हूं और मैं परिभाषा को समझने में सक्षम नहीं हूं।डायनेमो डीबी

परिभाषा मुझे मिली: एक आइटम का आकार इसके गुणों के नाम और मानों (बाइनरी और यूटीएफ -8 लंबाई) की लंबाई का योग है। इसलिए यदि आप विशेषता नाम कम रखते हैं तो यह मदद करता है।

क्या इसका मतलब है कि यदि मैं डेटाबेस में कोई संख्या डालता हूं, उदाहरण: 1 यह एक int का आकार लेगा? एक लंबा एक डबल ? क्या यह 100 या 1000000 से अधिक स्थान लेता है या यह केवल संबंधित बाइनरी का आकार लेगा?

और स्ट्रिंग के लिए कंप्यूटिंग क्या है?

क्या कोई ऐसा व्यक्ति है जो इसकी गणना कैसे करता है?

धन्यवाद

उत्तर

37

एक गैर तुच्छ विषय वास्तव में है कि - आप पहले से ही Amazon DynamoDB Data Model से कुछ हद तक लापरवाह परिभाषा उद्धृत किया:

एक आइटम आकार इसके विशेषता नामों की लंबाई का योग है और को महत्व देता है (बाइनरी और यूटीएफ -8 लंबाई)। - स्ट्रिंग्स हैं यूनिकोड UTF8 द्विआधारी कूटबन्धन के साथ

  • स्ट्रिंग:

इसमें कुछ समय Amazon DynamoDB Data Types भीतर पृष्ठ में और नीचे विस्तृत है।

  • संख्या - संख्या सकारात्मक या नकारात्मक सटीक-मूल्य दशमलव और पूर्णांक हैं। दशमलव बिंदु के बाद एक संख्या में सटीकता के 38 अंक हो सकते हैं, और 10^-128 से 10^+ 126 के बीच हो सकते हैं। अमेज़ॅन डायनेमो डीबी में प्रतिनिधित्व चर की लंबाई है। अग्रणी और पिछला शून्य शून्य छंटनी की जाती है।
  • तुम्हारा की तुलना में ऐसा ही एक सवाल Amazon DynamoDB forum में कहा गया है के रूप में अच्छी तरह से (Curious nature of the "Number" type देखें) और answer from [email protected] मुद्दे पर अधिक प्रकाश डालता है:

    • "संख्या" प्रकार 38 है परिशुद्धता के अंक ये वास्तविक दशमलव अंक हैं। तो यह बहुत बड़ी संख्या का प्रतिनिधित्व कर सकता है, और सटीक हानि नहीं है।
    • संख्या मूल्य कितना स्थान लेता है? भी ज्यादा नहीं। हमारा आंतरिक प्रतिनिधित्व चर लंबाई है, इसलिए आकार है जो मान में अंकों की वास्तविक (बनाम अधिकतम) संख्या से संबंधित है। अग्रणी और पिछला शून्य शून्य छंटनी बीटीडब्ल्यू हैं।[जोर मेरा]

    Christopher Smith's follow up post भंडारण की खपत और इसकी गणना के बारे में जिसके परिणामस्वरूप असर बारे में अधिक जानकारी प्रस्तुत करता है, वह निष्कर्ष निकाला है:

    मौजूदा एपीआई भंडारण खपत करने में बहुत कम जानकारी प्रदान करता है भले ही वह हिस्सा है (भले ही बिलिंग के महत्वपूर्ण)। एकमात्र जानकारी कुल तालिका आकार है, और यहां तक ​​कि वह डेटा संभावित रूप से सिंक से बाहर घंटे भी है।

    जबकि अमेज़न does not expose it's billing data via an API yet, वे वे उम्मीद है कि DynamoDB एपीआई के लिए कुछ के बारे में जानकारी मद आकार को पुनः प्राप्त करने के लिए एक विकल्प कुछ बिंदु पर, के रूप में क्रिस्टोफर ने सुझाव दिया जोड़ देंगे।

    +1

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

    +1

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

    +0

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

    3

    आप टाइटन DynamoDBDelegate कक्षा के लिए डायनेमो डीबी स्टोरेज बैकएंड में डायनेमोडीबी आइटम आकार की गणना के लिए एल्गोरिदम का उपयोग कर सकते हैं।

    +0

    वहाँ इस के लिए एक .net बराबर है? –

    +0

    टाइटन के लिए डायनामो डीबी स्टोरेज बैकएंड या आइटम आकार विधि के लिए? जवाब दोनों के लिए नहीं है, लेकिन आइटम आकार विधि को बंद करने के लिए यह सीधा होना चाहिए। –

    9

    मैं अमेज़न डेवलपर फ़ोरम क्लेरेंस द्वारा उत्तर @ एडब्ल्यूएस में इस उत्तर मिला:

    जैसे: -:

    आइटम आकार

    "Item":{ 
    "time":{"N":"300"}, 
    "feeling":{"S":"not surprised"}, 
    "user":{"S":"Riley"} 
    } 
    
    उपरोक्त वस्तु के आकार की गणना करने के

    विशेषता नाम और मानों की लंबाई, यूटीएफ -8 अक्षरों के रूप में व्याख्या की गई है। उदाहरण में, मद की बाइट की संख्या इसलिए

    Time : 4 + 3 
    Feeling : 7 + 13 
    User : 4 + 5   
    

    की राशि कौन सी 36

    औपचारिक परिभाषा के लिए है, का उल्लेख करने: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/WorkingWithDDItems.html

    +0

    यह उत्तर मुझे संदेह करता है, क्योंकि आप वर्णों की गणना कर रहे हैं, बाइट्स नहीं। यदि तार यूटीएफ -8 (एक और उत्तर रिपोर्ट के रूप में) हैं, तो आप एक बाइट वाले चरित्र का प्रतिनिधित्व नहीं कर सकते हैं। –

    +0

    इस उत्तर में यह भी उल्लेख किया गया है "आइटम का आकार विशेषता नामों और मानों की लंबाई का योग है, जिसे यूटीएफ -8 अक्षरों के रूप में व्याख्या किया गया है"। और एक यूटीएफ -8 चरित्र 1-4 बाइट ले सकता है। "इस" नमूना गणना में दिए गए प्रत्येक चरित्र में केवल 1 बाइट है। (बस यहां लंबाई की जांच करें: https://mothereff.in/byte-counter) –

    0

    सरल दृष्टिकोण हो जाएगा तालिका में कोई आइटम बनाने के लिए और आइटम को csv फ़ाइल में निर्यात करें जो डायनेमो डीबी में उपलब्ध एक विकल्प है। सीएसवी फ़ाइल का आकार आपको आइटम का आकार लगभग देगा।

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