rm_events_tbl branch
در ارتباط با پست قبل؛
البته تغییر file system یک راه حل موقت برای مکانیزمی است که در حال حاضر برای ذخیره رکوردها در نظر گرفته شده. راه حل اساسی در نظر گرفته شده به صورتی است که عرض میکنم. برای این راه حل branch جدایی به اسم rm_events_tbl در نظر گرفته شده.
ما به ازای هر فایل چرا اصولاً باید رکوردی در دیتابیس داشته باشیم؟ برای پر کردن timeline لازمه دسترسی سریعی به فایلهایی داشته باشیم که متعلق به یک بازه زمانی خاص هستند. این شاید مهمترین استفاده از جدول Events باشه. اما فقط این نیست. جاهای مختلف در به نما اول میبینیم چه رکوردهایی رو لازم داریم و بعد میریم سراغ فایلهای متناظر با اونها. در هاردی که برای ذخیره رکوردها در نظر گرفته شده به ازای هر دوربین یک directory ایجاد میکنیم که اسمش همون id دوربین در جدول Monitors هست. همه رکوردهای این دوربین تو این directory قرار میگیره. اسم هر رکورد هم id اون در جدول Events هست.
با این روش طبعاً به ازای هر دوربین فایلهای رکورد زیادی همه در داخل یک directory ایجاد میشه. یه فکری کردم که همین رو درستش کنم و با یه تیر دو نشون بزنم. بخشی از اطلاعاتی که داخل جدول Events میریزیم مربوط به زمان آغاز و پایان رکورد هست. به نظرم رسید به ازای هر روز یک folder ایجاد کنم و داخل اون به ازای هر ده دقیقه یک folder. تمام رکوردها و اطلاعاتی که مربوط به اون ده دقیقه میشه رو تو اون folder قرار بدم. خیالمون راحت میشه که هرچی مربوط به فلان ده دقیقه میشه رو دقیقاً کجا باید پیدا کنیم. تو اون folder هست و خارج از اون folder نیست. طبعاً یه سری اطلاعات غیر از زمان شروع و پایان هم هست که در دیتابیس هست و ما لازمش داریم. میتونیم فایلهای db رو همچنان داشته باشیم. اما دیگه تعدادش اونقدر در یک folder بالا نمیره که file system کند بشه. اینطوری به نوعی تقسیم بندی کردهایم و هیچ دسترسی نفس گیری برای هیچ folderی ایجاد نکردهایم. شاید همون ext4 هم بتونه کارمون رو راه بندازه.
چند وقت پیش به دنبال این ایده تغییراتی هم در branch مذکور در به نما ایجاد کردم. اما کار زیاد داره و کارهای با اولویت بالا هم اومد و مانع شد که ادامهش بدم. فکر عدم ادامه پیدا کردن به نما هم مزید بر علت شد و سستم کرد. اما اگر بشه کار خیلی خوبی میشه. لازمه تغییرات زیادی صورت بگیره، مثل اینکه ما الان هر فایل رکوردمون با یک iframe شروع میشه. اومدیم و iframe دوربین سر ده دقیقه نیومد. تکلیف چیه؟ شاید دوربینی به صورت تعمیم یافته، نه اینکه واقعاً اینطور باشه، تصمیم گرفت هر ساعت یک iframe بیشتر نفرسته. آیا باید رکوردهای ده دقیقه تا یک ساعت ادامه پیدا کنه؟ پس آیا باید قبول کنیم که یک record file با یک iframe شروع نشه؟ مشکل دیگه اینه که dts و ptsی که دوربین داره میده رو ظاهراً داریم میندازیم دور و بر اساس زمان سیستم اونها رو در سرور مجدداً میسازیم و در record file میریزیم. دیده شده که بر اثر بار سیستم اینها خیلی وقتها منظم نیستند. مثلاً فاصله زمانی فریمهای دوربین با یک tolerance کم یه مقدار معلومی است، اما خیلی وقتها فاصله زمانی فریمهای ذخیره شده برای فریمهای زیادی پشت سر هم حتی صفر بوده و بعد یه دفعه یه مقدار زیادی شده و از نظم خارج شده. از طرفی اگر بخواهیم dts و pts دوربین رو ملاک قرار بدیم یه sync زمانی بین زمان دوربین و زمان سرور باید صورت بگیره ظاهراً. آیا میشه از این بگذریم و زمان اولیه رو ملاک قرار بدیم؟ یه مقدار به این چیزها باید فکر کنم و تغییراتی که میدم باید دقیق و درست باشه که خرابکاری صورت نگیره. تو بخش رکورد هم یه کدهایی رو من نزدهام و شاید بتونم بگم بیشتر کدهاش رو دیگران زدهاند و همین یه مقدار کار رو کند میکنه. باید برم بخونم ببینم چطوریه که خراب نشه. برای همین این branch یه مقدار سر فرصت پیش میره و وقتی کار دیگهای نیست روش کار میکنم. اما ایده ایدهٔ خوبیه.
نظرات
ارسال یک نظر