2017-11-13 31 views
7

हम अमेज़ॅन एडब्ल्यूएस एस 3 में फाइलों को स्टोर करते हैं, और पोस्टग्रेस में दस्तावेज़ तालिका में उन फ़ाइलों के संदर्भ रखना चाहते हैं। मैं सर्वोत्तम प्रथाओं की तलाश में हूं। हम पाइथन/Django का उपयोग करते हैं, और वर्तमान में यूआरएल स्टोर करते हैं जो boto3.s3.key.Key().generate_url(...) से वापस आता है। लेकिन इसके साथ बहुत से मुद्दे:डेटाबेस में AWS S3 ऑब्जेक्ट्स के संदर्भ संग्रहीत करने के लिए सर्वोत्तम अभ्यास?

  • बाल्टी को पार्स और यूआरएल से बाहर करना चाहिए।
  • कुंजी नाम urldecode की आवश्यकता है।
  • object versioning का समर्थन नहीं करता है।
  • यूनिकोड समर्थन urlencode/decode चरणों के कारण गड़बड़ करना आसान है, esp।

तो, मैं बाल्टी, कुंजी, और तीन अलग-अलग क्षेत्रों में संस्करण के भंडारण पर विचार कर रहा हूँ, और डीबी प्राथमिक कुंजी के साथ साथ एक सुरक्षित रूप से एन्कोड फ़ाइल नाम का एक संयोजन के रूप में कुंजी बनाने, लेकिन नहीं करता है, तो पता था बेहतर दृष्टिकोण थे?

उत्तर

1

सुनिश्चित नहीं हैं कि सबसे अच्छा-est दृष्टिकोण है, लेकिन हम की दुकान करता है, तो:

  • अद्वितीय ऑब्जेक्ट ID डेटाबेस में (जिसके लिए Postgres एक देशी UUID प्रकार है)
  • बाल्टी नाम और पथ में (UUID हो सकता है) विन्यास

इस तरह आप कर सकते हैं कम से कम (जैसा कि हम एक ही बाल्टी + पथ के अंतर्गत एक ही प्रकार के सभी वस्तुओं की दुकान):

  • ले जाएँ वस्तुओं एक अलग बाल्टी/पथ के लिए havig बिना अगर आप ऐसा दूर
  • फेंक अपने प्राथमिक कुंजी चुनें स्थानीय संग्रहण में S3 से
  • स्विच अपने पूरे डेटाबेस तालिका के पुनर्लेखन के लिए (जैसे विभाजन तालिकाओं के दौरान) आपकी वस्तुओं का ट्रैक खोने के बिना
संबंधित मुद्दे

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