আমি আমার বর্তমান কয়েকটি অ্যাপ্লিকেশন প্রকল্পের সাথে এগিয়ে যাওয়ার সর্বোত্তম উপায় নির্ধারণ করায় আমি যা শিখেছি তা এখানে।
অ্যাসিঙ্ক স্টোরেজ (স্থানীয় প্রতিক্রিয়া জানাতে "বিল্ট-ইন")
আমি ইন-প্রোডাকশন অ্যাপ্লিকেশনের জন্য অ্যাসিঙ্কস্টোরেজ ব্যবহার করি। স্টোরেজ ডিভাইসে স্থানীয় থাকে, এনক্রিপ্ট করা হয় না (যেমন অন্য উত্তরে উল্লিখিত হয়েছে), আপনি অ্যাপটি মুছে ফেললে চলে যায়, তবে আপনার ডিভাইসের ব্যাকআপের অংশ হিসাবে সংরক্ষণ করা উচিত এবং আপগ্রেডের সময় অবিরত থাকবে (উভয় নেটিভ আপগ্রেড আলা টেস্টফ্লাইট এবং কোড আপশের মাধ্যমে কোড আপগ্রেড) )।
উপসংহার: স্থানীয় স্টোরেজ; আপনি নিজের সিঙ্ক / ব্যাকআপ সমাধান সরবরাহ করেন।
SQLite
আমি যে অন্যান্য প্রকল্পগুলিতে কাজ করেছি সেগুলি অ্যাপ্লিকেশন স্টোরেজের জন্য স্ক্লাইট 3 ব্যবহার করেছে। এটি আপনাকে একটি এসকিউএল -র মতো অভিজ্ঞতা দেয়, সংকোচনযোগ্য ডেটাবেসগুলির সাথে যা ডিভাইসে এবং থেকেও সংক্রমণিত হতে পারে। সেগুলি একটি শেষ প্রান্তে সিঙ্ক করার সাথে আমার কোনও অভিজ্ঞতা নেই তবে আমি কল্পনা করি যে বিভিন্ন গ্রন্থাগার রয়েছে। এসকিউএলাইটে সংযোগের জন্য আরএন গ্রন্থাগার রয়েছে।
ডেটাবেস, টেবিল, কী, সূচক ইত্যাদির সাহায্যে আপনার চিরাচরিত ডাটাবেস ফর্ম্যাটে ডেটা সংরক্ষণ করা হয় যা সমস্ত বাইনারি বিন্যাসে ডিস্কে সংরক্ষণ করা হয়। কমান্ড লাইন বা এসকিউএল ড্রাইভার রয়েছে এমন অ্যাপ্লিকেশনগুলির মাধ্যমে ডেটাতে সরাসরি অ্যাক্সেস পাওয়া যায়।
উপসংহার: স্থানীয় স্টোরেজ; আপনি সিঙ্ক এবং ব্যাকআপ সরবরাহ।
Firebase
ফায়ারবেস অন্যান্য জিনিসের সাথে সাথে একটি রিয়েল টাইম নোএসকিউএল ডাটাবেস সহ জেএসওএন ডকুমেন্ট স্টোর (মঙ্গোডিবি এর মত) এর সাথে সংখ্যায় 1 থেকে n ক্লায়েন্টকে সংখ্যায়িত করে। দস্তাবেজগুলি অফলাইনে অধ্যবসায়ের বিষয়ে কথা বলে তবে কেবল নেটিভ কোডের জন্য (সুইফ্ট / ওবজে-সি, জাভা)। গুগলের নিজস্ব জাভাস্ক্রিপ্ট বিকল্প ("ওয়েব") যা প্রতিক্রিয়া নেটিভ দ্বারা ব্যবহৃত হয় তা ক্যাশেড স্টোরেজ বিকল্প সরবরাহ করে না (নীচে 2/18 আপডেট দেখুন)। একটি ওয়েব ব্রাউজার সংযোগ হতে চলেছে এই ধারণাটি সহ গ্রন্থাগারটি লেখা হয়েছে, এবং তাই একটি আধা-অবিচ্ছিন্ন সংযোগ থাকবে। আপনি সম্ভবত ফায়ারবেস স্টোরেজ কল পরিপূরক হিসাবে স্থানীয় স্থানীয় ক্যাচিং ব্যবস্থা লিখতে পারেন, বা আপনি স্থানীয় গ্রন্থাগার এবং প্রতিক্রিয়া নেটিভ মধ্যে একটি সেতু লিখতে পারেন।
আপডেট 2/2018
আমি নেটিভ প্রতিক্রিয়া পেয়েছি যা আইওএস এবং অ্যান্ড্রয়েড লাইব্রেরিগুলিতে (গুগল সম্ভবত যা করতে পারে / করতে পারে তা করে) একটি সামঞ্জস্যপূর্ণ জাভাস্ক্রিপ্ট ইন্টারফেস সরবরাহ করে, আপনাকে প্রতিক্রিয়ার বোনাস সহ নেটিভ লাইব্রেরিগুলির সমস্ত গুডিজ প্রদান করে স্থানীয় সমর্থন। গুগলের রিয়েল-টাইম ডাটাবেসের পাশে একটি জেএসএন ডকুমেন্ট স্টোর প্রবর্তনের সাথে সাথে ফায়ারবাসকে আমি তৈরি করার পরিকল্পনা করছি এমন কিছু রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য একটি ভাল দ্বিতীয় চেহারা দিচ্ছি।
রিয়েল-টাইম ডাটাবেসটি JSON- এর মতো গাছ হিসাবে সংরক্ষণ করা হয় যা আপনি ওয়েবসাইটে সম্পাদনা করতে পারেন এবং খুব সহজভাবে আমদানি / রফতানি করতে পারেন।
উপসংহার: প্রতিক্রিয়া নেটিভ-ফায়ারবেস দিয়ে, আরএন সুইফট এবং জাভা হিসাবে একই সুবিধা পায়। [/ আপডেট] নেটওয়ার্ক-সংযুক্ত ডিভাইসগুলির জন্য স্কেলগুলি ভাল। স্বল্প ব্যবহারের জন্য স্বল্প ব্যয়। অন্যান্য গুগল অফারগুলির সাথে দুর্দান্তভাবে সম্মিলিত। ডেটা সহজেই দৃশ্যমান এবং তাদের ইন্টারফেস থেকে সম্পাদনাযোগ্য।
রাজত্ব
আপডেট 4/2020 মোংগোডিবি বাস্তবতা
অর্জন করেছে এবং এটি মঙ্গোডিবি স্টিচের সাথে সংযুক্ত করার পরিকল্পনা করছে (নীচে আলোচনা করা হয়েছে)। এটি খুব উত্তেজনাপূর্ণ দেখাচ্ছে ।
স্বয়ংক্রিয় নেটওয়ার্ক সিঙ্ক্রোনাইজেশন সহ একটি রিয়েল টাইম অবজেক্ট স্টোর। তারা নিজেকে "প্রথম ডিভাইস" হিসাবে টাউট করে এবং ডেমো ভিডিওটি দেখায় যে কীভাবে ডিভাইসগুলি বিক্ষিপ্ত বা ক্ষতিকারক নেটওয়ার্ক সংযোগ পরিচালনা করে।
তারা আপনার নিজের সার্ভারে বা এডাব্লুএস বা অ্যাজুরের মতো ক্লাউড সলিউশনে হোস্ট করা অবজেক্ট স্টোরের একটি বিনামূল্যে সংস্করণ সরবরাহ করে। আপনি ইন-মেমরি স্টোরগুলিও তৈরি করতে পারেন যা ডিভাইস, কেবলমাত্র ডিভাইস স্টোরগুলি যা সার্ভারের সাথে সিঙ্ক হয় না, কেবল পঠনযোগ্য সার্ভার স্টোর এবং এক বা একাধিক ডিভাইসগুলির মধ্যে সিঙ্ক্রোনাইজেশনের জন্য সম্পূর্ণ পঠন-লিখন বিকল্পটি বজায় রাখে না। তাদের কাছে পেশাদার এবং এন্টারপ্রাইজ অপশন রয়েছে যা ফায়ারবেসের চেয়ে প্রতি মাসে বেশি খরচ করে।
ফায়ারব্যাসের বিপরীতে, সমস্ত রিয়েলম ক্ষমতাগুলি রিয়েট নেটিভ এবং জ্যামারিনে সমর্থিত যেমন তারা সুইফট / ওজেসিসি / জাভা (নেটিভ) অ্যাপ্লিকেশনগুলিতে রয়েছে।
আপনার ডেটা আপনার কোডের অবজেক্টের সাথে আবদ্ধ। যেহেতু সেগুলি সংজ্ঞায়িত অবজেক্ট, আপনার কাছে একটি স্কিমা রয়েছে এবং কোড স্যানিটি করার জন্য সংস্করণ নিয়ন্ত্রণ করা আবশ্যক। জিইউআই সরঞ্জামগুলি রিয়েলম সরবরাহ করে এর মাধ্যমে সরাসরি অ্যাক্সেস পাওয়া যায়। অন ডিভাইস ডেটা ফাইলগুলি ক্রস প্ল্যাটফর্মের সাথে সামঞ্জস্যপূর্ণ।
উপসংহার: ডিভাইসটি প্রথমে, নিখরচায় এবং প্রদত্ত পরিকল্পনার সাথে alচ্ছিক সিঙ্ক্রোনাইজেশন। সমস্ত বৈশিষ্ট্য প্রতিক্রিয়া নেটিভ সমর্থিত। আনুভূমিক স্কেলিং ফায়ারবেসের চেয়ে বেশি ব্যয়বহুল।
iCloud এর
আমি সত্যই এইটির সাথে খুব বেশি খেলিনি, তবে অদূর ভবিষ্যতে এটি করব।
যদি আপনার কাছে নেটিভ অ্যাপ্লিকেশন থাকে যা ক্লাউডকিট ব্যবহার করে, আপনি কোনও ওয়েব অ্যাপ্লিকেশন (বা, আমাদের ক্ষেত্রে প্রতিক্রিয়া নেটিভ) থেকে আপনার অ্যাপ্লিকেশনটির ধারকগুলির সাথে সংযোগ করতে ক্লাউডকিট জেএস ব্যবহার করতে পারেন। এই পরিস্থিতিতে আপনার সম্ভবত একটি নেটিভ আইওএস অ্যাপ্লিকেশন এবং একটি প্রতিক্রিয়া নেটিভ অ্যান্ড্রয়েড অ্যাপ্লিকেশন থাকতে পারে।
রিয়েলমের মতো, এটি স্থানীয়ভাবে ডেটা সঞ্চয় করে এবং সম্ভব হলে এটি আইক্লাউডে সিঙ্ক করে। আপনার অ্যাপের জন্য পাবলিক স্টোর এবং প্রতিটি গ্রাহকের জন্য ব্যক্তিগত স্টোর রয়েছে। এমনকি গ্রাহকরা তাদের স্টোর বা অন্য কিছু ব্যবহারকারীর সাথে ভাগ করে নিতে বেছে নিতে পারেন।
কাঁচা তথ্য অ্যাক্সেস করা কতটা সহজ তা আমি জানি না; স্কিমার অ্যাপল এর সাইটে সেট আপ করা যেতে পারে।
উপসংহার: অ্যাপল-লক্ষ্যযুক্ত অ্যাপ্লিকেশনের জন্য দুর্দান্ত।
Couchbase
বড় নাম, এর পিছনে প্রচুর বড় বড় সংস্থা। মানক সমর্থন ব্যয়ের সাথে একটি সম্প্রদায় সংস্করণ এবং এন্টারপ্রাইজ সংস্করণ রয়েছে।
তাদের প্রতিক্রিয়া নেটিভ জিনিস আপ করার জন্য তাদের সাইটে একটি টিউটোরিয়াল পেয়েছে। আমি এটির জন্য খুব বেশি সময়ও ব্যয় করি নি, তবে কার্যকারিতার দিক থেকে এটি রিয়েলমের একটি কার্যকর বিকল্প বলে মনে হচ্ছে। আপনার অ্যাপ বা আপনার নির্মিত কোনও এপিআই এর বাইরে আপনার ডেটাতে পাওয়া কত সহজ তা আমি জানি না।
[সম্পাদনা করুন: একটি পুরানো লিঙ্কটি খুঁজে পেয়েছে যা কাউচবাজ এবং কাউচডিবি সম্পর্কে কথা বলে এবং কাউচডিবি বিবেচনা করার জন্য আর একটি বিকল্প হতে পারে। দুটি historতিহাসিকভাবে সম্পর্কিত তবে বর্তমানে সম্পূর্ণ আলাদা পণ্য। এই তুলনা দেখুন ।]
উপসংহার: রিয়েলমের মতোই সক্ষমতা রয়েছে বলে মনে হচ্ছে। কেবলমাত্র ডিভাইস বা সিঙ্ক করা যায়। আমার এটি চেষ্টা করা প্রয়োজন।
MongoDB
আপডেট 4/2020
মঙ্গো রিয়েলকে অধিগ্রহণ করেছে এবং মোংগোডিবি স্টিচকে (নীচে আলোচনা করা হয়েছে) রিয়েলমের সাথে (উপরে আলোচিত) একত্রিত করার পরিকল্পনা করেছে ।
আমি স্থানীয়ভাবে AsyncStorage ব্যবহার করে এমন একটি অ্যাপের জন্য এই সার্ভারটি ব্যবহার করছি। আমি পছন্দ করি যে ক্লায়েন্ট ডিভাইসগুলিকে খুব সোজাভাবে সংক্রমণ করে জেএসওএন অবজেক্ট হিসাবে সবকিছু সঞ্চিত রয়েছে। আমার ব্যবহারের ক্ষেত্রে এটি টিভি গাইড ডেটা এবং আমার ক্লায়েন্ট ডিভাইসের একটি প্রবাহ সরবরাহকারীর মধ্যে ক্যাশে হিসাবে ব্যবহৃত হয়।
স্কিমার মতো ডেটাতে কোনও শক্ত কাঠামো নেই, সুতরাং প্রতিটি বস্তু একটি "নথি" হিসাবে সংরক্ষণ করা হয় যা সহজেই অনুসন্ধানযোগ্য, ফিল্টারযোগ্য, ইত্যাদি rable অনুরূপ JSON অবজেক্টগুলিতে অতিরিক্ত (তবে ভিন্ন) বৈশিষ্ট্য বা শিশু অবজেক্ট থাকতে পারে, যার ফলে আপনি কীভাবে আপনার অবজেক্ট / ডেটা গঠন করেন তাতে অনেক নমনীয়তা।
আমি কোনও ক্লায়েন্টকে সার্ভার সিঙ্ক্রোনাইজেশন বৈশিষ্ট্যগুলিতে চেষ্টা করিনি, বা এটি এম্বেড ব্যবহার করেছি। মঙ্গোডিবি-র জন্য স্থানীয় কোডের প্রতিক্রিয়া রয়েছে।
উপসংহার: স্থানীয় কেবল নোএসকিউএল সমাধান, রিয়েলম বা ফায়ারবেসের মতো কোনও সুস্পষ্ট সিঙ্ক বিকল্প নেই।
আপডেট 2/2019
মঙ্গোডিবির স্টিচ নামে একটি "পণ্য" (বা পরিষেবা) রয়েছে। যেহেতু ক্লায়েন্টগুলি (ওয়েব ব্রাউজার এবং ফোনের অর্থে) সরাসরি মঙ্গোডিবি-র সাথে কথা বলা উচিত নয় (এটি আপনার সার্ভারের কোড দ্বারা সম্পন্ন হয়েছে), তারা একটি সার্ভারলেস ফ্রন্ট-এন্ড তৈরি করেছে যা আপনার অ্যাপ্লিকেশনগুলির সাথে ইন্টারফেস করতে পারে, আপনি যদি তাদের ব্যবহার করার সিদ্ধান্ত নেন হোস্টেড সলিউশন (অ্যাটলাস)। তাদের ডকুমেন্টেশনগুলি এটি উপস্থিত করে তোলে যে কোনও সম্ভাব্য সিঙ্ক বিকল্প রয়েছে।
এই (অন্যান্য নথিতে সংযুক্ত নমুনার সাথে একটি নমুনা অ্যাপ্লিকেশানে নেটিভ, সেলাই, এবং MongoDB প্রতিক্রিয়া ব্যবহার ডিসেম্বর 2018 আলোচনা থেকে কাজের মধ্যে থাকবেন, https://www.mongodb.com/blog/post/building-ios-and-android-apps -মেনডোডব-সেলাই-রিএ্যাক্ট-নেটিভ-এসডিকে )।
টিভিলিও সিঙ্ক
সিঙ্ক্রোনাইজেশনের জন্য আর একটি নোএসকিউএল বিকল্প হ'ল টোভিলিওয়ের সিঙ্ক। তাদের সাইট থেকে: "সিঙ্ক আপনাকে কোনও ব্যাকএন্ড অবকাঠামো পরিচালনা না করে স্কেল সময়ে রিয়েল টাইমে যেকোন ডিভাইস জুড়ে রাজ্য পরিচালনা করতে দেয়" "
আমি উল্লিখিত প্রকল্পগুলির একটির জন্য ফায়ারবেসের বিকল্প হিসাবে এটি দেখেছিলাম, বিশেষত উভয় দলের সাথে কথা বলার পরে। আমি তাদের অন্যান্য যোগাযোগের সরঞ্জামগুলিও পছন্দ করি এবং এগুলি একটি সাধারণ ওয়েব অ্যাপ্লিকেশন থেকে আপডেটগুলি টেক্সট করার জন্য ব্যবহার করি।
[সম্পাদনা] আমি রিয়েলমের সাথে কিছুটা সময় ব্যয় করেছি যেহেতু আমি মূলত এটি লিখেছিলাম। আমি পছন্দ করি ফায়ারবেসের অনুরূপ অ্যাপ এবং সার্ভারের মধ্যে ডেটা সিঙ্ক করার জন্য কীভাবে আমাকে কোনও এপিআই লিখতে হবে না। সার্ভারলেস ফাংশনগুলিও এই দুটিটির সাথে সত্যই সহায়ক বলে মনে হচ্ছে, আমাকে লিখতে হবে ব্যাকএন্ড কোডের পরিমাণ সীমিত করে।
আমি মঙ্গোডিবি ডেটা স্টোরের নমনীয়তা পছন্দ করি, তাই এটি ওয়েব-ভিত্তিক এবং অন্যান্য সংযোগ-প্রয়োজনীয় অ্যাপ্লিকেশনগুলির সার্ভার সাইডের জন্য আমার পছন্দ হয়ে উঠছে।
আমি RESTHeart পেয়েছি , যা মঙ্গোডিবিতে একটি খুব সাধারণ, স্কেলযোগ্য RESTful API তৈরি করে। রিএএসটিয়ার্টে JSON অবজেক্টগুলি পড়তে এবং লেখার জন্য একটি রিএ্যাক্ট (নেটিভ) উপাদান তৈরি করা খুব কঠিন হওয়া উচিত নয়, যা তাদের পরিবর্তে মঙ্গোডিবিতে / পাস করে।
[সম্পাদনা] ডেটা কীভাবে সংরক্ষণ করা হয় সে সম্পর্কে আমি তথ্য যোগ করেছি। কখনও কখনও আপনার যদি ডেটা টুইট এবং পরীক্ষা করতে হয় তবে আপনি বিকাশ এবং পরীক্ষার সময় কতটা কাজের জন্য থাকতে পারেন তা জানা গুরুত্বপূর্ণ।
সম্পাদনা 2/2019 গত বছর (2018) একটি উচ্চ- প্রকল্প ডিজাইন করার সময় আমি এই বিকল্পগুলির বেশ পরীক্ষা করেছি। তাদের মধ্যে কিছু তাদের ডকুমেন্টেশনে কঠোর এবং নরম সমঝোতার সীমা উল্লেখ করেছেন (অল্টকনফে উভয় দলের সাথে আলোচনা অনুসারে টোলিওর একটি স্নিগ্ধ সীমা ছিল যা ভাঙা যায়), আমি বিশ্বাস করি।
আপনি যদি কয়েক হাজার থেকে কয়েক হাজার ব্যবহারকারীর জন্য একটি অ্যাপ্লিকেশন ডিজাইন করেন তবে সেই অনুযায়ী ডেটা ব্যাকএন্ড স্কেল করতে প্রস্তুত থাকুন।