মোঙ্গোডিবি-র কীতে `.` সহ জেএসএন নথি .োকানো হচ্ছে


14

প্রথমত, এটি একটি প্রোগ্রামিং প্রশ্নের চেয়ে একটি নকশা প্রশ্ন বেশি।

আমি একটি অ্যাপ্লিকেশন তৈরি করছি যেখানে আমাকে বিদ্যমান জেএসওএন ডেটা আনতে এবং এটি মঙ্গোডিবিতে sertোকাতে হবে। আমি দেখতে পেলাম যে JSON এর কিছু দস্তাবেজগুলির কীগুলির একটি সময়কাল .রয়েছে। আমি মঙ্গোডিবি ডকুমেন্টেশনে পড়েছি যে .জিজ্ঞাসাবাদের জন্য পিরিয়ডগুলি মুন্ডোডিবিতে কী হিসাবে অনুমোদিত হয় না।

আমি ওয়েব অ্যাপ্লিকেশনগুলিতে অনেকগুলি সন্নিবেশ করি না, এটি এক সময়ের সন্নিবেশ pretty এছাড়াও, আমি বেশিরভাগ পুরো দস্তাবেজটির অংশগুলির জন্য জিজ্ঞাসা না করে পুনরুদ্ধার করব কারণ আমার সমস্ত ডেটা পেতে হবে।

সুতরাং, আমার প্রয়োজনীয়তা বিবেচনা করে, JSON ডকুমেন্ট কীভাবে সংরক্ষণ করতে হবে সে সম্পর্কে আমার দুটি পছন্দ আছে:

  1. কীগুলিতে সময়কালের জন্য জেএসএনের মাধ্যমে অনুসন্ধান করুন এবং সেগুলি এড়িয়ে চলুন এবং তারপরে এগুলি মঙ্গোডিবিতে .োকান।
  2. পুরো JSON কে BSON ফর্ম্যাটে রূপান্তর করুন এবং এগুলি সংরক্ষণ করুন, এভাবে পালানোর প্রয়োজনীয়তা এড়ানো এবং মঙ্গোডিবি-র বাইরে যখন প্রয়োজন হয় তখন ম্যানুয়ালি JSON পার্স করুন

আপনি কি আমাকে বলতে পারেন কোনটি আরও ভাল নকশা হবে, কারণ আমি কোনও সিদ্ধান্তে আসতে সক্ষম নই।


এটি সমাধানের একটি উপায় হ'ল সন্নিবেশ পদ্ধতিটি ব্যবহার করা এবং চেক_কিজ প্যারামিটারটিকে মিথ্যাতে সেট করা। অন্য উপায়টি হ'ল আপনার নথির মধ্য দিয়ে যাওয়া এবং অভিযুক্ত বিন্দুর প্রতিটি ঘটনাকে অন্য কোনও কিছুর সাথে সমতুল্য ইউনিকোড অক্ষর (ভাল, অক্ষর) দ্বারা প্রতিস্থাপন করা।
নোয়া

উত্তর:


3

কয়েকটি বিকল্প রয়েছে:

1. একটি ড্যাশ দ্বারা বিন্দু প্রতিস্থাপন।

এটি আমার প্রিয় পন্থা হবে, কারণ এটি কাঠামো যথেষ্ট পরিমাণে সুস্পষ্ট রাখে।

আপনার মতে যেহেতু, "এটি একবারে সন্নিবেশ করা প্রায়শই", এটি কোনও কিছু ভেঙে না ফেলে কিনা তা পরীক্ষা করা তুলনামূলকভাবে সহজ হওয়া উচিত (যেমন ড্যাশ সহ ইতিমধ্যে একই কী রয়েছে)। অন্যান্য পরিস্থিতিতে, এই চেকগুলি প্রোগ্রামক্রমে করার জন্য কিছু কোড লিখতে হবে তবে এটি এখনও তুলনামূলক সহজ কাজ।

২. ইউনিকোড ডট অক্ষর যেমন ইউ + এফএফ0 ই দ্বারা বিন্দুগুলি প্রতিস্থাপন করুন

আমি এই পদ্ধতির বিরুদ্ধে দৃ strongly়ভাবে পরামর্শ দেব, যেহেতু এটি রাস্তায় ডাউন ডিবাগিং মাথাব্যথার দিকে পরিচালিত করবে । মোংগোডিবি থেকে দূরে কোডে কোথাও ফলস্বরূপ জেএসএনকে ব্যবহার করা যাকে অনুমান করার জন্য যে কোনও বিন্দু আসলেই একটি বিন্দু নয় কোনও ব্যক্তির আক্ষরিক কয়েক সপ্তাহের সময় নষ্ট করার একটি ভাল উপায়। এমন ইউনিকোড কৌশলগুলি হ্যাকারদের কাছে রাখুন যারা কাউকে একটি চরিত্রটি আলাদা বলে ভেবে প্ররোচিত করতে চান।

3. BSON ব্যবহার করুন।

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

সাধারণভাবে, অপূর্ণতাটি হ'ল আপনি দস্তাবেজটি অনুসন্ধান করতে বা এটির একটি অংশ লোড করতে সক্ষম হবেন না।

৪. বেস 6464 এর মতো একটি স্ট্যান্ডার্ড এনকোডিং ব্যবহার করুন।

সমস্যাযুক্ত কীগুলি (বা সমস্ত কীগুলি, সমস্যাযুক্ত এবং অ-সমস্যাযুক্তগুলির মধ্যে অনুপাতের উপর নির্ভর করে) বেস 64 বা হেক্সাডেসিমালকে রূপান্তর করা একটি কার্যকর সমাধান হতে পারে বরং এর সুস্পষ্ট সুবিধার সাথে: বেশিরভাগ বিকাশকারী বেস 64 এবং হেক্সাডেসিমাল মানগুলি এক নজরে স্বীকৃতি জানাতে পারে ।

অপূর্ণতা হ'ল বর্ধিত মেমরি পদক্ষেপ, পাশাপাশি কীগুলি ব্যবহার করার সময় এনকোড এবং ডিকোড করার প্রয়োজনীয়তা।

5. সেট check_keysকরুন false

আমি এই পদ্ধতির বিরুদ্ধে দৃ strongly়ভাবে পরামর্শ দেব, যেহেতু ডেটা ক্যোয়ারিকে অস্পষ্ট করে তুলবে, এবং কোনও নির্দিষ্ট ক্যোয়ারী আপনাকে কী করা উচিত বলে কল্পনা করেছিল তা কেন করে না তা নির্ধারণের চেষ্টা করার সময় বা দিন নষ্ট করে দেয়। বিন্দু একটি সংরক্ষিত চরিত্র এবং আপনার সুরক্ষার জন্য চেকটি এখানে রয়েছে; মঙ্গোডিবিকে চেকটি এড়িয়ে চলতে বলার মাধ্যমে আপনি কেবল সেই মুহূর্তটি স্থগিত করবেন যেখানে আপনাকে মঙ্গোডিবি সিনট্যাক্স এবং একটি কীতে ব্যবহৃত সংরক্ষিত চরিত্রের মধ্যে দ্বন্দ্ব মোকাবেলা করতে হবে।


0

শুধু BSON ব্যবহার করুন। তারপরে আপনার ভাল পরীক্ষিত গ্রন্থাগার সমর্থন সহ একটি ভাল নথিভুক্ত ফর্ম্যাট রয়েছে এবং সবচেয়ে গুরুত্বপূর্ণ আপনি ক্ষতি ছাড়াই এটি (এনকোড / ডিকোড) উল্টাতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.