বস্তু Appengine সঙ্গে বড় ফোঁটা সংরক্ষণ

আমি এই ক্লাস যা আমি Objectify ব্যবহার করে অবিরত করতে চাই, এই বর্গ 1MB এর চেয়ে বড় একটি তথ্য প্রতিনিধিত্ব করবে, সুতরাং ব্লব বস্তুর একটি তালিকা আছে যা 1 এমবি এর আকারের কম সংরক্ষণ বাইট অ্যারের একটি টুকরা উপস্থাপন করে:

@Entity
public class BigBlob {

    @Id
    private Long id;
    public static final int FRAGMENT_LIMIT = 777 * 1024;
    @Serialized
    private List fragments = new ArrayList();

    ...

}

তবুও, "টুকরা" @ স্যারিয়ালাইজড, যা 1MB এর চেয়ে বড় BigBlob ক্লাস/বস্তুর আকার রেন্ডার করবে।

এই ত্রুটির কারণে:

com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.

যদি আমি @ এমবেডেড এনাটেশন ব্যবহার করি তবে আমি এই ত্রুটিটি পাই:

Cannot place array or collection properties inside @Embedded arrays or collections

কিভাবে আমি নিশ্চিত যে "টুকরা" একটি পৃথক সত্তা হিসাবে সংরক্ষণ করা হয়?

বিটিউডব্লিউ, আমার কাছে ইতিমধ্যেই বাইট চকিং লজিক আছে যা সমগ্র বাইট অ্যারেটি বন্ধ করে দেয় এবং টুকরাগুলিকে একটি তালিকা এর ব্লব এ রাখে যাতে করে এই প্রশ্নটি কীভাবে বপন করতে হয় ।

বেশিরভাগই আমি জানতে চাই ক্রমাগত দিকে আরও বেশি।

5
যোগ সম্পাদিত
মতামত: 1

2 উত্তর

আপনি Blobstore এটি সংরক্ষণ করা উচিত এবং শুধু Objectify এর Blobkey সংরক্ষণ করুন। বস্তুটি ড্যাটাস্টোরের উপরে কাজ করে, ব্লোবস্টারের নয়।

4
যোগ

রিকের উত্তরটি সত্যিই চমত্কার - blobstore মধ্যে দোকান blobs, বিশেষ করে যদি আপনি GAE নতুন এবং datastore সঙ্গে ধারণাগত সমস্যা আছে।

অন্য দিকে, আপনি blobs সংরক্ষণের জন্য বিভক্ত সত্ত্বা ব্যবহার করার কিছু ভাল কারণ আছে, বিশেষত যদি আপনি 1 ম প্রান্তের কাছাকাছি যে তথ্য সংরক্ষণ করা হয়। আপনি 100MB blobs সঙ্গে এটি করতে চাই না, কিন্তু 2MB blobs ইন্দ্রিয় করতে পারেন।

প্রথমত, আপনি সিরিয়ালিত বা এম্বেড করতে চান না। যারা একটি একক সত্তা ভিতরে তথ্য গঠন সহজ উপায়।

এছাড়াও, কোন জাদু বক্তৃতা নেই যা আপনাকে সমস্ত সংস্থা জুড়ে blobs বিভক্ত করতে দেয়। আপনি হাত দ্বারা এটা সব করতে হবে আপনি আসলে একটি 'মাস্টার' বা মূল সত্তা তৈরি করতে হবে না; শুধু একটি আইডি (কিন্তু কোন প্রকৃত সত্তা) দ্বারা সংজ্ঞায়িত একটি পিতা বা মাতা সঙ্গে সব সত্তা টুকরা তৈরি এবং সমস্ত টুকরা আনা একটি পূর্বপুরুষ() জিজ্ঞাসা ব্যবহার।

2
যোগ
@ স্টিকফাইয়ার মানে আপনার ফাইল আপলোড করার সময় ফাইলসার্ভার এপিআই আসলে ফাইল আপলোড করে? আমার ক্ষেত্রে আমি Objectervice দিয়ে মেটাডেটা সংরক্ষণ করেছিলাম এবং ফাইলসভার API ব্যবহার করে বাইট ব্যবহার করে স্টোর করেছি
যোগ লেখক xybrek, উৎস
আপনি নিশ্চিতভাবেই পারেন, কিন্তু blobstore- সম্পর্কিত APIs সঙ্গে কাজ করার একটি ব্যথা হয় এবং সহজেই অন্যান্য datastore কাজ সঙ্গে লেনদেন করা যাবে না। কখনও কখনও এটি datastore ব্যবহার করা বেশ সহজ, এমনকি বহুবিধ সত্তা হ্যাক সঙ্গে। অন্য দিকে, ডিস্টাস্টোর স্টোরেজ তুলনায় ব্লোবসস্টোর স্টোরেজ সস্তা, তাই এই পছন্দটি frivolously করা উচিত নয়।
যোগ লেখক stickfigure, উৎস
পিটি() এনজিওর সাদৃশ্যের সাথে তুলনা করা বা() একটি সত্তা নিযুক্ত করা, ফাইলস এপিআই একটি মানসিকতা, এবং স্বাভাবিক ফোঁটা আপলোড ইউআরএল ব্যবহার করে প্রোগ্রাম লজিকের জন্য অত্যন্ত আক্রমণাত্মক। লেনদেন সম্পর্কে - কেন না আপনি লেনদেন চান যে blobstore এবং datastore span? আমি প্রায়শই একটি ব্লব লিখুন এবং যে ব্লব জন্য কিছু অতিরিক্ত মেটাডাটা লিখুন। আমি অপারেশন লেনদেন-ইশ হওয়া উচিত কিছু গুরুত্বপূর্ণ হুপ্স মাধ্যমে যেতে হবে।
যোগ লেখক stickfigure, উৎস
সব ফাইল এবং চ্যানেল এবং লক এবং পাঠক এবং লেখক সঙ্গে, জাভা ফাইল APIs overengineered মনে হয়। পাইথন ফাইল API একই সমস্যা ভোগে না প্রদর্শিত হয়, এবং এই ভাষা পার্থক্য দ্বারা ব্যাখ্যা করা হয় না। যখন আপনি এখনও মাল্টি-সত্তা blobs করতে কিছু boilerplate প্রয়োজন, এটা একটি তুচ্ছ পরিমাণ এবং ইতিমধ্যে datastore API- র সাথে পরিচিত কারো কাছে স্বজ্ঞাত। কিন্তু প্রকৃতপক্ষে, মাল্টি-সত্তা ব্লবগুলির প্রধান যুক্তি হল আপনার অ্যাপ্লিকেশনের লেনদেনিক লজিকের সাথে সংহত করা।
যোগ লেখক stickfigure, উৎস
"অন্যদিকে, ব্লোশ সংরক্ষণের জন্য বিভক্ত সত্তাগুলির জন্য কিছু ভাল কারণ রয়েছে, বিশেষ করে যদি আপনি 1 মিটার প্রান্তের কাছাকাছি তথ্য সংরক্ষণ করেন তবে" - সত্যিই না, কোনও কারণ নেই যে আপনি 1MB এর চেয়ে ছোট ছোটগুলি সঞ্চয় করতে পারবেন না ব্লোবসস্টোরও
যোগ লেখক Nick Johnson, উৎস
ব্লোগস্টোর API গুলোর সাথে কি কাজ করা কঠিন? এবং কেন আপনি একটি লেনদেনের প্রয়োজন যে blobstore এবং datastore spans?
যোগ লেখক Nick Johnson, উৎস
আমি কেন এটা 'monstrosity' হিসাবে যোগ্যতা না জানি না - এটি হিসাবে সহজ এটা আমার কি প্রয়োজন, কি প্রয়োজন হতে পারে হিসাবে সহজ। এবং তুলনা একটি একক রাখা হয় না - এটি একাধিক সত্ত্বা জুড়ে একটি blob সম্পত্তি বিস্তার করতে আপনি প্রয়োজন যা অবকাঠামো যাই হোক না কেন!
যোগ লেখক Nick Johnson, উৎস
গুগল স্টোরেজ বাল্ক অপারেশন (যেমন আর্কাইভ) দিয়ে ধীর গতিতে থাকে যদি আপনার কাছে (লক্ষাধিক) ছোট ছোট গুলি থাকে তারপর ডাটাস্টোর এবং বিভাজক blobs যা 1MB অতিক্রম ব্যবহার ভাল হতে পারে
যোগ লেখক xmedeko, উৎস
এখনও পর্যন্ত প্রতি প্রশ্নে 10MB সীমাবদ্ধ আছে, তাই আপনি 10MB ফাইলের বেশি বিভক্ত হলে আপনি এটি এক প্রশ্ন দ্বারা এটি পেতে পারেন না।
যোগ লেখক xmedeko, উৎস