"বিষয়বস্তু সরবরাহকারী" এবং "এসকিউএল ডাটাবেস" এর মধ্যে ঠিক পার্থক্য


87

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

কিন্তু তারপর,

  1. "বিষয়বস্তু সরবরাহকারী" এবং "এসকিউএলাইট ডাটাবেস" এর মধ্যে সঠিক পার্থক্যটি কী?
  2. কোনটি ডেটা সংরক্ষণ করা ভাল, কখন?

কোন উদাহরণ বা সাহায্য !!

উত্তর:


135

আমি একটি বড় পার্থক্য খুঁজে পেয়েছি, নীচে:

আপনার ডেটাবেসে আপনার ডেটা সংরক্ষণ করা আপনার ডেটা বজায় রাখার একটি ভাল উপায় , তবে অ্যান্ড্রয়েডে তৈরি অ্যান্ড্রয়েড-ডেটাবেসগুলিতে visibleকেবল একটি তৈরি করা অ্যাপ্লিকেশনই রয়েছে। এর অর্থ হল, একটি অ্যাপ্লিকেশন দ্বারা অ্যান্ড্রয়েডে তৈরি করা একটি এসকিউএল ডাটাবেস কেবলমাত্র সেই অ্যাপ্লিকেশন দ্বারা ব্যবহারযোগ্য, অন্যান্য অ্যাপ্লিকেশন দ্বারা নয়।

সুতরাং, যদি আপনি need to share data between applications, you need to use the content provider model as recommended in Android.এই নিবন্ধটি সামগ্রী সরবরাহকারীদের মৌলিক বিষয়গুলি উপস্থাপন করেন এবং আপনি কীভাবে এটি প্রয়োগ করতে পারেন।

আমি এই লিঙ্কটি এই নিবন্ধটি খুঁজে পেয়েছি

সত্যিই দুর্দান্ত তথ্য সরবরাহ করা হয়েছে।


4
লিঙ্কটি এখন মারা গেছে বলে মনে হচ্ছে ... আর আর্টিকেলটি দেখতে পাবেন না। আপনি যে নিবন্ধটি উল্লেখ করছেন সেটি যদি আবার খুঁজে পান তবে দেখতে চান।
prolink007

11 ফেব্রুয়ারী 2012 এ লিঙ্কটি http://www.devx.com/wireless/Article/41133 কাজ করে
বি

আমরা যদি থ্রেডে নিরাপদ উপায়ে একাধিক অ্যাপ্লিকেশন জুড়ে ডেটা ভাগ করে নেওয়ার প্রক্রিয়াতে প্রক্রিয়া সরবরাহ করি তবে কী হবে?
মনোহর

4
আরেকটি যুক্ত সুবিধা হ'ল সামগ্রী সরবরাহকারীরা প্রতিটি ক্রিয়াকলাপের জন্য একক থ্রেড ব্যবহার করেন, সুতরাং একাধিক থ্রেড একটি স্ক্লাইট ক্ষেত্রে যেমন ডাটাবেসটি পরিবর্তন করতে পারে না
-এ-ট্যাট-এ-ট্যাট রাতাতুইল

54

"বিষয়বস্তু সরবরাহকারী" এবং "এসকিউএলাইট ডাটাবেস" এর মধ্যে সঠিক পার্থক্যটি কী?

ContentProviderএকটি মুখোমুখি - এমন একটি API যা আপনি প্রয়োগ করতে পারেন যা অন্যান্য প্রক্রিয়াতে ডেটাবেসগুলি প্রকাশ করে। এটি এমন উপায়ে প্রয়োগ করা যেতে পারে যেখানে ডেটা একটি এসকিউএল ডাটাবেসে সংরক্ষণ করা হয়, তবে এটি হওয়ার দরকার নেই।

কোনটি ডেটা সংরক্ষণ করা ভাল, কখন?

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


26
আমি একটি কনটেন্টপ্রোভিডার ব্যবহার পছন্দ করি কারণ এটি এসকিউএল-এর চেয়ে খুব সুন্দর বিমূর্ততা। আপনি কার্সরএডাপ্টার এবং স্বয়ংক্রিয় প্রয়োজনীয়তার সাথেও দুর্দান্ত খেলতে পারেন।
আলেকজান্দ্রবার্লম

27

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

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

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

আপডেট করুন 2017 আমি এখন রিয়েলটিতে চলে এসেছি , যে কোনও প্ল্যাটফর্মে ডাটাবেস ব্যবহারের আরও ভাল উপায়। এটি শিখতে কয়েক ঘন্টা ব্যয় করুন এবং আপনার অ্যাপ্লিকেশন বিকাশের ক্যারিয়ারে অগণিত ঘন্টা সঞ্চয় করুন।


আমি আমার কোডটি বিষয়বস্তু সরবরাহকারীতে রূপান্তর করতে ভাবছিলাম কিন্তু এখন আমি এটি রাখার কথা ভাবছি।
মোহাম্মদ সুহি শেখ কুরুউশ

এখন আপনি অ্যান্ড্রয়েডের 'কক্ষ' লাইব্রেরি যুক্ত করতে পারেন
রবীন্দ্র কুশওয়াহা

8

1. সামগ্রী সরবরাহকারী থ্রেড নিরাপদ নয়

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

এই ভাবে একবারে কেবল একটি থ্রেড এই পদ্ধতিগুলিতে অ্যাক্সেস করতে পারে।

2. প্রচুর লেখার সময় দুর্দান্ত খেলুন

অ্যাপ্লিকেশন দ্বারা অভ্যন্তরীণভাবে ব্যবহৃত ডাটাবেসে বাইনারি ফাইলগুলি থেকে ডেটা আমদানির জন্য আমার নতুন সার্ভাল মানচিত্র অ্যাপ্লিকেশনটির প্রয়োজন। এটি করার জন্য এবং বাকি অ্যাপ্লিকেশনটির সাথে দুর্দান্ত খেলতে ভাল:

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

৩. সামগ্রী সরবরাহকারীরা আপনাকে মাঝে মধ্যে মাঝে মাঝে চিন্তা করতে বাধ্য করে

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

এর অর্থ হ'ল আপনি অন্তর্নিহিত ডাটাবেসে কাঁচা এসকিউএল কোয়েরিগুলি সম্পাদন করতে পারবেন না এবং আপনাকে কোয়েরি পদ্ধতি হিসাবে বিভিন্ন পদ্ধতিতে ভেরিয়েবল ব্যবহার করে একটি এসকিউএল কোয়েরির বিভিন্ন উপাদান নির্দিষ্ট করতে হবে। যদি আপনার কোনও কাজ থাকে যা কোনও কনটেন্ট সরবরাহকারীর দ্বারা এসকিউএল পরিচালিত হয় তার সাথে ফিট করে না তবে আপনার দুটি বিকল্প রয়েছে:

ক্যোয়ারির সম্পর্কে দীর্ঘস্থায়ী চিন্তা করুন, সম্ভবত আপনি বিকল্প অনুসন্ধানগুলি এবং কার্সার থেকে ফলাফল অ্যাক্সেসের মাধ্যমে আপনার প্রয়োজনীয় ডেটা পেতে পারেন; এবং সাধারণত ডেটা অ্যাক্সেসের জন্য একটি ইউআরআই এবং একটি বিশেষ ইউআরআই ব্যবহার করুন যা সেই কার্যগুলির জন্য নির্দিষ্ট প্রশ্নের সাথে মিলে যায় যার বিকল্প নেই that


অনুযায়ী ContentProvider আছে বাস্তবায়ন হবে একযোগে একাধিক থ্রেড দ্বারা বলা যেতে পারে ContentProvider ছয় বিমূর্ত পদ্ধতি, তাই তারা থ্রেড-নিরাপদ হিসাবে প্রয়োগ করা করা আবশ্যক। অ্যাবস্ট্রাক্ট ক্লাস কন্টেন্টপ্রভাইডার নির্দিষ্ট কোডগুলির ব্যতিক্রমের কারণ নয় তবে বাস্তবায়ন implementation কন্টেন্টপ্রাইডারের থ্রেড নিরাপদ পদ্ধতিগুলি প্রয়োগ করতে প্রক্রিয়াগুলি এবং থ্রেডগুলি অনুসরণ করুন ।
স্টাহলরাট

5

আপনি অ্যাপ্লিকেশন জুড়ে আপনার ডেটা ভাগ করতে চাইলে সামগ্রী সরবরাহকারী ব্যবহার করা হয়।

আপনার যদি কোনও অ্যাপ্লিকেশনটির সাথে কোনও ডাটাবেস সংযুক্ত থাকে এবং আপনি অন্য অ্যাপ্লিকেশনটি কিছু ডেটা ব্যবহার করতে চান তবে আপনি কোনও সামগ্রী সরবরাহকারী প্রয়োগ করতে পারেন যা ডেটা প্রকাশ করে


3

মূল পার্থক্যটি হ'ল: যখন আপনার অ্যাপ্লিকেশনটিকে অন্য অ্যাপ্লিকেশনগুলিতে তথ্য ভাগ করে নেওয়া প্রয়োজন, তখন সামগ্রী-সরবরাহকারী ব্যবহার করুন। এসকিউএলাইট কেবল এটির অ্যাপ্লিকেশনটির স্টোরেজ ডেটা


3

আমি একই উত্তর খুঁজতে গিয়ে এই উত্তরটি পড়েছি , তাই এটি ভাগ করে নেওয়ার চিন্তাভাবনা করেছি। এতে বলা হয়েছে -

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

সুতরাং, একটি সামগ্রী সরবরাহকারী ব্যবহার করা ভাল ধারণা হবে।


3

উন্নত কন্টেন্ট ম্যানেজমেন্ট সিস্টেমগুলির কথা চিন্তা করুন। প্রতিটি বস্তুর (পৃষ্ঠা, চিত্র, সংবাদ নিবন্ধ, ইভেন্ট আইটেম, ইত্যাদি) এর একটি সামগ্রী, একটি ঠিকানা, ব্যবহারকারীর অনুমতি এবং সিস্টেমের বিভিন্ন অংশ থেকে এটির সাথে যোগাযোগ করার উপায় রয়েছে। সামগ্রী সরবরাহকারীরা অ্যান্ড্রয়েডের জন্য এটি করে। আপনি এখন আপনার অ্যাপ্লিকেশনটিতে সঞ্চিত ফাইল বা চিত্রগুলি ভাগ করতে পারেন। আপনি কাস্টম শেয়ারেবল অবজেক্টস তৈরি করতে পারেন, যেমন বিসনেস পরিচিতি, সম্পাদনাযোগ্য নোট ইত্যাদি And


1

একটি পার্থক্য হ'ল সামগ্রী সরবরাহকারীদের সামগ্রী পর্যবেক্ষকদের জন্য প্ল্যাটফর্ম সমর্থন রয়েছে। আপনার এসকিউএল ডাটাবেসের জন্য আপনার নিজের পর্যবেক্ষণযোগ্য প্যাটার্নটি প্রয়োগ করতে হবে।

লোডারম্যানেজারের সাথে কীভাবে স্বয়ংক্রিয়ভাবে পুনঃ-জিজ্ঞাসা করবেন

এসকিউএলাইটের জন্য কন্টেন্টঅবার্সার?

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