Table of Contents
এমবেড করা সিস্টেমে প্রায়শ:ই স্থানীয় তথ্য ব্যবস্থার প্রয়োজন, যা সম্পূর্ণ ডাটাবেস সার্ভার সার্ভার দ্বারা নয়। সি. সি.এ.এ একটি লাইটওয়েট ডাটাবেস ইঞ্জিনের উপর ভিত্তি করে ডেভেলপারকে সরাসরি নিয়ন্ত্রণ করতে হবে। এই প্রবন্ধটি একটি সাধারণ তথ্য ইঞ্জিনের মাধ্যমে, তথ্য কাঠামো, CUDOFIning কাঠামো, এবং রিসোর্সের জন্য প্রয়োজনীয় তথ্যের কাঠামো এবং কৌশলের মাধ্যমে নির্মিত।
এমবেড করা একটি এমবেড ডাটাবেস ইঞ্জিনের জন্য কোরেজার প্রয়োজন
একটি সন্নিবেশিত ডাটাবেস ইঞ্জিন RAM, ফ্ল্যাশ এবং প্রক্রিয়া দ্রুত উপর চাপ প্রয়োগ করে । সাধারণত: Partinigs, Noline কোড line line line lined এবং কোনো পূর্ব নির্ধারিত বৈশিষ্ট্যের নিয়ম-কানুন উল্লেখ করা আবশ্যক । ইঞ্জিনের মৌলিক কাজ, আপডেট, সংরক্ষণ, এবং অনুসন্ধানের ক্ষেত্রে ব্যবহারযোগ্য কোনো ডাটাবেসের ক্ষেত্রে প্রতিরোধ প্রয়োজন নেই । অনেক মডিউলের জন্য তথ্য পাওয়ার প্রয়োজন হয় যেমন, যেমন ই- টেক্সট/ RPAUPRAD, bD, eFP, stP, এবং লোড, ইত্যাদির ক্ষেত্রে ট্র্যাক কার্ডের মধ্যে সংরক্ষণ করতে হবে ।
সঠিক তথ্য গঠন করা হচ্ছে প্রথম ডিজাইনের পদ্ধতি। দ্রুত বৃদ্ধি পেতে ব্যবহৃত হয় কিন্তু সীমিত মাপের লিস্টের সাহায্যে লিঙ্কের মধ্যে সীমাবদ্ধ থাকে। একটি হাইবারনেটের ক্ষেত্রে একটি হাই-ফাইড কাজ করে। একটি অবাণিজ্যিক রেকর্ড রেকর্ডিং কাজ করতে পারে যেখানে [FL] [FL] [FL] [F] এর জন্য খুব সহজ মানের জন্য যথেষ্ট পরিমাণ]
রেকর্ড সংগ্রহস্থলের স্তর ডিজাইন করুন
সংগ্রহস্থলের স্তর কীভাবে মেমরি অথবা ডিস্কের মধ্যে রেকর্ড করা হয় তার উপর ভিত্তি করে রেকর্ডগুলি কিভাবে পরিচালিত হয়। প্রতিটি রেকর্ডের জন্য একটি সাধারণ বিন্যাসকে একটি নির্দিষ্ট গঠন হিসাবে ব্যবহার করা হয় এবং সরাসরি ইন্ডেক্সের রেকর্ডকে সমন্বয় করতে হবে। ভেরিয়েবল-স্ট্রেশনের মধ্যে একত্রিত হওয়া রেকর্ড d-র কিছুটা অংশ প্রয়োজন এবং মেমরি ব্যবস্থাপক প্রয়োজন হয়।
রেকর্ড পুলের মাধ্যমে পরিবর্তনযোগ্য দৈর্ঘ্য রেকর্ড
রেকর্ডের সর্বোচ্চ সংখ্যা নির্ধারণ করুন। [e.[F], part[) ও একটি স্থায়ী অ্যারে নির্মাণ করুন। একটি বা ফাঁকা ঘরের সারি ব্যবহার করা হয় যা কোন অংশে ব্যবহৃত হয়। রেকর্ড ফাঁকা স্থান ফাঁকা থাকলে, এর সাহায্যে পুলে ফিরে যেতে হবে এবং বরাদ্দের পদ্ধতি এড়িয়ে যাওয়া হবে।
#define MAX_RECORDS 256
typedef struct {
int id;
char name[32];
float value;
int active; // 1 if slot in use
} Record;
Record pool[MAX_RECORDS];
সংরক্ষণের জন্য, পুলটি একটি ফাইল বা ফ্ল্যাশ এলাকা থেকে ফেরত পাঠানো যাবে। ইঞ্জিনটি শুরু করার সময়, নন-অলেকট্রিসিটি থেকে রাম (অথবা বন্ধ) এর স্মৃতি থেকে প্রাপ্ত এবং বন্ধের মাধ্যমে তা ফেরত পাওয়া যাবে।
ডাটা শুদ্ধতা সংক্রান্ত তথ্য
প্রতিটি রেকর্ডের জন্য একটি সহজ চেকসাম ঘর যোগ করো । [FRRC-32][FOPL] -[FLT] একটি ভাল সিদ্ধান্ত, যা এমবেড সিস্টেমের জন্য একটি ভাল, ত্রুটি সহ জটিলতা দূর করা যায় না ।
মৌলিক CRCD অপারেশন
রেকর্ড পুল নির্ধারণ করা হয়েছে, সন্ধান করা, আপডেট এবং মুছে ফেলার প্রক্রিয়া প্রায় সমান, সুতরাং একটি সরল সন্ধান শুধু ছোট ডাটাবেসের জন্য গ্রহণযোগ্য (একটি শত রেকর্ড)।
মুক্ত- 6-এর সাথে সন্নিবেশ করুন
রেকর্ডের মধ্যে মুক্ত-প্ল্যাটিকের তালিকা লিখে, প্রবেশ করান, রেকর্ড পূর্ণ করুন এবং এটি সক্রিয় করুন। বিনামূল্যের-listlist-listing একটি সহজ স্ট্যাক ব্যবহার করে এটি একটি সাধারণ স্ট্যাক।
int free_list[MAX_RECORDS];
int free_count = MAX_RECORDS;
for (int i = 0; i < MAX_RECORDS; i++) free_list[i] = i;
int db_insert(int id, const char* name, float value) {
if (free_count == 0) return -1; // no space
int idx = free_list[--free_count];
pool[idx].id = id;
strncpy(pool[idx].name, name, sizeof(pool[idx].name)-1);
pool[idx].value = value;
pool[idx].active = 1;
return idx;
}
অনুসন্ধান ও আপডেট করুন
একটি সহজ সন্ধান পুলের উপর নির্ভর করে, শুধুমাত্র সক্রিয় রেকর্ড চেক করুন। এই সন্ধান, রেকর্ড, পরিবর্তন, এবং রেকর্ডগুলো নিজে সন্ধান করুন।
int db_find_by_id(int id) {
for (int i = 0; i < MAX_RECORDS; i++) {
if (pool[i].active && pool[i].id == id) return i;
}
return -1;
}
void db_update(int idx, float new_value) {
if (idx >= 0 && idx < MAX_RECORDS && pool[idx].active)
pool[idx].value = new_value;
}
অগ্রসর কনসালপন্স: সূচক এবং পার্সেন্স
রেকর্ডের সংখ্যা যত বৃদ্ধি পায়, সে সময় সাইডবারের অনুসন্ধান তত বেশি ব্যয়বহুল হয়। একটি সাধারণ সূচক যোগ করে একটি সাধারণ কী-কি অথবা একটি বাইনারি গাছের অনুরূপ মাপে লেখা হয়। অনচ্ছলটি সাধারণত: সন্ধানযোগ্য বাইনারি অনুসন্ধানের জন্য একটি স্থায়ী অ্যারের মধ্যে লেখা হয়।
বাইনারি অনুসন্ধান দ্বারা ইন্ডেক্স গঠন করা হবে
অনুসন্ধানের উদ্দেশ্যে চিহ্নিত শব্দের মাত্রা অনুযায়ী, অনুসন্ধানের জন্য স্বয়ংক্রিয়ভাবে তথ্য মুছে ফেলা হবে। (অর্থাৎ, ID, book) দ্বারা একটি নতুন রেকর্ড নির্মাণ করা হলে এই অনুসন্ধানের জন্য চিহ্নিত সংখ্যার মধ্যে সঠিক রূপে উল্লিখিত হয়। ভ্রামক ও 'বিক্ষি' অনুসন্ধানের জন্য ট্র্যাকটি রূপান্তর করা হয়, কিন্তু ছোট মাপের ইন্ডেক্সের জন্য এটি গ্রহণযোগ্য নয়।
পটেগ্রেশন স্টোরেজ ফাইল ব্যবহার করে
ফাইল-সিস্টেম বিনা একটি মাইক্রো- নিয়ন্ত্রণার দ্বারা, raw মেমরির মধ্যে লেখা সাধারণ ফাইল । Linux-ভিত্তিক সিস্টেমের মধ্যে উপস্থিত প্রমিত লগ-ইন ব্যবস্থার ক্ষেত্রে প্রযোজ্য মান: [FFLTR], প্রমিত[/FOFTON:]]] [FRS]]] সাধারণ ফাইল লেখার জন্য একটি প্রসেসের নাম লেখা যাবে: SIL [F], 3::::L, সময়-ILUTROTIL [FPL] লেখা যাবে। (শুধুমাত্র লগের মাধ্যমে প্রদর্শিত) [FT] লেখা হলে, 1 (FW:) [FW:) [FRUTIL] লেখা যাবে।
void db_save(const char* filename) {
FILE* fp = fopen(filename, "wb");
if (!fp) return;
fwrite(pool, sizeof(pool), 1, fp);
fclose(fp);
}
void db_load(const char* filename) {
FILE* fp = fopen(filename, "rb");
if (!fp) return;
fread(pool, sizeof(pool), 1, fp);
fclose(fp);
// Rebuild free-list from pool
free_count = 0;
for (int i = 0; i < MAX_RECORDS; i++) {
if (!pool[i].active) free_list[free_count++] = i;
}
}
যুক্তি-সম্প্রদায় এবং বাণিজ্যের নির্ধারিত
এমবেড করা ডাটাবেসের মধ্যে রয়েছে একটি নিয়মিত বাণিজ্যের চাপ, বৈশিষ্ট্য এবং রিসোর্সের মধ্যে সীমাবদ্ধ থাকা। এই প্রযুক্তি ব্যবহারের উপর নির্ভর করে নির্বাচন করা হয়:
- [[[F][FOPRE][FLT] - সাধারণত প্রয়োজন নেই । সাধারণ পারমাণবিক ভর লগ করা জন্য যথেষ্ট । অধিকাংশ সেন্সর তথ্য লগ করা হয়েছে ।
- [[[F]][FLT][F][F]] - এর জন্য সংযোজন করুন; কিন্তু দ্রুত পড়ার গতি পড়ুন । লেখার জন্য write-Hevigsssssss, Noport.
- [[[F][F][FLT] - সমস্ত ট্র্যাক [FLT] - বেশিরভাগ প্রতি একটি থ্রেড চালু করে । একটি RTOSECIO সহযোগে লক (RECTOSE) নিষ্ক্রিয় করো ।
- [[F]] মেমরির শেষ উল্লেখ [FLT] [FLT] - এর ক্ষেত্রে [FO]] সীমার চেয়ে দীর্ঘতর [FOL] ব্যবহার করুন । [FOD]:LO[FLT]
- [[F] [F] [FLT] [FLT] - র ক্ষেত্রে] - ফ্ল্যাশ সংরক্ষণের জন্য, প্রায়ই ছোট লেখার জন্য । এবং একটি ডাবল-বুফার স্কীম ব্যবহার করুন ।
ব্যবহারের এক সহায়ক উদাহরণ: Temperature of the drogge ডাটাবেস
আইওটি তাপমাত্রা সেন্সর বিবেচনা করুন যা প্রতি ২৪ ঘন্টা স্থানীয়ভাবে পড়া হয় এবং এগুলো সংরক্ষণ করে । ডাটাবেস ইঞ্জিনের জন্য ১৪৪০টি রেকর্ড (প্রতি মিনিটে) রেকর্ড করা প্রয়োজন হতে পারে । প্রতিটি রেকর্ড একটি টাইম- আউট-কার্ড (U888), এবং সেন্সর আইডি (fect দ্বারা নির্ধারিত তাপমাত্রা) ব্যবহার করা একটি সেন্সর আইডি ব্যবহার করে । অত্যন্ত ছোট বিন্দুর পরিমাণ বড় আকারে ব্যবহার করা প্রয়োজন; যা ব্যবহার করে ৬.৪.৪ / ৪.৪ / ৪০, তাই হল ১, ৬.৪.৪ / ৪ / ৪ / ৬ / ১)
ইঞ্জিনটি একটি রিং-বুফার স্টাইলে তথ্য সংরক্ষণ করতে পারে: যখন পুল পূর্ণ থাকে, সবচেয়ে পুরোনো রেকর্ডটি নতুনভাবে লেখা হয় এবং প্রাচীন সক্রিয় রেকর্ডের জন্য একটি "যোগ" চিহ্ন এবং "যোগাযোগ" নির্দেশ করে । এই ইঞ্জিন মুক্ত-list-lists (১) অাউটপুটিয়ে থাকা অবস্থায় একটি বাইনারি সন্ধান করা যাবে। যদি স্বয়ংক্রিয় তথ্য সংরক্ষণ করে রাখা হয়, তাহলে এটি সংরক্ষণ করা যাবে।
typedef struct {
uint32_t timestamp;
float temp_c;
uint8_t sensor_id;
uint8_t active; // not needed if using ring buffer
} TemperatureRecord;
#define MAX_LOGS 1440
TemperatureRecord logs[MAX_LOGS];
uint16_t head = 0; // next write position
uint16_t count = 0; // number of valid records
একটিও নয়
লক্ষ্য হার্ডওয়্যারে সম্প্রসারণ এবং পরীক্ষা করুন
সংযুক্ত হার্ডওয়্যারের ডাটাবেস ইঞ্জিন সবসময় পরীক্ষা করুন। এমুলেটরের ক্ষেত্রে সীমাবিহীন সময় এবং শক্তি হারিয়ে ফেলার জন্য বিশেষ করে ফ্ল্যাশ গণনা ও শক্তি হারিয়ে যাওয়া দৃশ্যের জন্য। মনিটর, পরিপূর্ণ তথ্য, সংরক্ষণ, সংরক্ষণ, পুনরায় পরীক্ষা করুন হাজার হাজার এলোমেলো প্রবেশের মধ্য দিয়ে, অনুসন্ধান, এবং তাদের মধ্যে একটি সোনার নকশা মুছে ফেলুন।
- [[FLT] [FOL] -[FLT] - যদি EPROREL বা নেট্রো তে লেখার জন্য লিখতে হয়, তাহলে সীমা হল প্রায় কয়েক হাজার । একটি কন্ট্রল স্তর পড়ার সাথে একটি কনটেন্টের স্থির থাকা জীবন বিস্তৃতি।
- [[[F]] WiFLT সুরক্ষিত [FLT] -[F] - একটি চিহ্ন ব্যবহার করো: একটি sign(] স্থানান্তর করো: একটি সম্পূর্ণ ভেন্ড ভণ্ড ভণ্ড ভণ্ডের একটি পতাকা লিখতে, পুনরায় পরীক্ষা, শেষ ব্যাচটি পরীক্ষা, এবং পূর্ববর্তী অবস্থায় ফিরে যাওয়া।
- [[F] মেমরি: 0] WEF[F] - গভীর Date ML[FLT] - গভীর Date" - দীর্ঘ বিবরণ এড়িয়ে চলুন । কল অগভীরভাবে কল করুন । ফাইল লেখার জন্য jousting বাফারের স্থির থাকুন ।
অন্তর্ভুক্ত
কনভেশন সিস্টেমের একটি প্রাথমিক ডাটাবেস ইঞ্জিন নির্মাণ করা হল রিসোর্স- মিসডেন্সী যন্ত্রের মধ্যে তথ্য পরিচালনার জন্য একটি বাস্তব পদ্ধতি। সাধারণ তথ্য কাঠামোর উপর মনোযোগ দিয়ে, নির্মাতারা খুব সাধারণ সিডিআরডিআর (রি-সি) অপারেশনের পাশাপাশি সাধারণভাবে কার্যকর সি- আর প্রাথমিক তথ্য সংযোজনে সহায়তা করতে সক্ষম। একটি সাধারন বৈশিষ্ট্যের সাহায্যে স্থানীয় ফাইলে সংযোজন করা যায় এমন একটি সাধারন পদ্ধতি যা সহজে করা যায় না। এই পদ্ধতিতে সহজে সহজে সহজে কার্যকর হবে না। এর ফলে স্থানীয় সেন্সরের মাত্রা এবং এর ফলে কাঠামোর মাধ্যমে কিভাবে আরো উন্নত হবে তা আরো উন্নত হবে, এবং কাঠামোর মাধ্যমে প্রভাবিত হবে তা আরো উন্নত মানের তথ্য সরবরাহ করতে হবে।