لایه داده انتزاعی

لایه داده انتزاعی، مدل داده یکپارچه سامانه، انتزاع تجهیزات و نرمال‌سازی داده که برنامه‌ها را از ذخیره‌سازی فیزیکی جدا می‌کنند.

لایه داده انتزاعی میان ذخیره‌سازی فیزیکی داده‌ها و برنامه‌هایی که از آن‌ها استفاده می‌کنند قرار می‌گیرد. این لایه پیاده‌سازی فیزیکی و جزئیات سخت‌افزاری را پنهان می‌سازد و یک رابط واحد برای کار با داده‌ها فراهم می‌کند. این لایه موارد زیر را ارائه می‌دهد:

  • استقلال از سخت‌افزار: داده‌ها بر روی دستگاه‌های گوناگون (سرورها، ابر، دستگاه‌های IoT) ذخیره می‌شوند، اما برنامه از طریق یک رابط واحد با آن‌ها تعامل دارد.
  • توسعهٔ ساده‌تر: توسعه‌دهندگان با موجودیت‌های انتزاعی کار می‌کنند، بدون آنکه نگران جزئیات ذخیره‌سازی فیزیکی باشند.
  • انعطاف‌پذیری: تغییر در ساختار فیزیکی داده‌ها (برای نمونه، مهاجرت به ابر) تأثیری بر برنامه‌ها نمی‌گذارد.

مدل داده یکپارچه

سامانه از یک مدل داده یکپارچه استفاده می‌کند که با انواع گوناگون تجهیزات سازگار شده است و امکان می‌دهد بدون توجه به منبع یا نوع تجهیزات، به‌شیوه‌ای یکسان با آن‌ها کار کنید. این مدل شامل ساختارهای داده مشترک، قواعد پردازش یکسان و سازگاری معنایی داده‌ها در سراسر همهٔ سامانه‌ها و زیرسامانه‌ها است.

برای نمونه، مدل داده یکپارچهٔ سامانه شامل موارد زیر است:

  • موجودیت‌ها: تجهیزات، کانال‌ها، نشست‌ها، واحدها و پارامترهای مرجع.
  • روابط: تجهیزات دارای کانال هستند، کانال‌ها با داده‌ها مرتبط‌اند و داده‌ها با نشست‌ها در ارتباط‌اند.
  • صفت‌ها: برای هر موجودیت صفت‌هایی تعریف می‌شود (برای نمونه، equipment.serial_number و channel_data.value).

ساختار مدل داده یکپارچهٔ سامانه

مدل داده یکپارچهٔ سامانه ساختاری برای ذخیره و مدیریت داده‌های مرتبط با تجهیزات، کانال‌ها، نشست‌ها و اندازه‌گیری‌ها است. بیایید هر جدول و هدف آن و نیز روابط میان آن‌ها را بررسی کنیم.

جدول channel_data

این جدول داده‌های دریافت‌شده از کانال‌های تجهیزات در نشست‌های مشخص را ذخیره می‌کند.

FieldTypeشرح
idbigintشناسهٔ یکتای رکورد (کلید اصلی).
equipment_idbigintارجاع به تجهیزات (equipment.id).
seance_idbigintارجاع به نشست (seances.id).
channel_idbigintارجاع به کانال (channels.id).
unit_idbigintارجاع به واحد اندازه‌گیری (units.id).
archive_type_idintegerارجاع به نوع آرشیو (referenceparameters.id).
event_timeintegerزمان رویداد (مثلاً برچسب زمانی).
valuecharacter varying(100)مقدار دریافت‌شده از کانال.
created_attimestamp(6) without time zoneزمان ایجاد رکورد.
updated_attimestamp(6) without time zoneزمان آخرین به‌روزرسانی رکورد.

روابط:

  • کلید خارجی unit_id به جدول units ارجاع می‌دهد.
  • کلید خارجی archive_type_id به جدول referenceparameters ارجاع می‌دهد.
  • کلید خارجی equipment_id به جدول equipment ارجاع می‌دهد.
  • کلید خارجی channel_id به جدول channels ارجاع می‌دهد.
  • کلید خارجی seance_id به جدول seances ارجاع می‌دهد.

جدول units

این جدول واحدهای اندازه‌گیری به‌کاررفته برای داده‌های کانال را ذخیره می‌کند.

FieldTypeشرح
idbigintشناسهٔ یکتای رکورد (کلید اصلی).
namecharacter varying(30)نام واحد اندازه‌گیری.
varnamecharacter varying(30)نام متغیر کوتاه برای واحد اندازه‌گیری.
descriptioncharacter varying(100)شرح واحد اندازه‌گیری.
conversion_factordouble precisionضریب تبدیل برای واحد اندازه‌گیری.
roundingsmallintتعداد ارقام اعشار برای گرد کردن.
synonymscharacter varying[]آرایه‌ای از مترادف‌های واحد اندازه‌گیری.
created_attimestamp(6) without time zoneزمان ایجاد رکورد.
updated_attimestamp(6) without time zoneزمان آخرین به‌روزرسانی رکورد.

جدول referenceparameters

این جدول پارامترهای مرجع مانند انواع آرشیو یا دیگر مشخص‌کننده‌ها را ذخیره می‌کند.

FieldTypeشرح
idbigintشناسهٔ یکتای رکورد (کلید اصلی).
namecharacter varying(30)نام واحد اندازه‌گیری.
varnamecharacter varying(30)نام متغیر کوتاه برای واحد اندازه‌گیری.
descriptioncharacter varying(100)شرح واحد اندازه‌گیری.
parent_idintegerارجاع به پارامتر والد (سلسله‌مراتب).
referencemodel_idintegerارجاع به مدل فهرست مرجع.
created_attimestamp(6) without time zoneزمان ایجاد رکورد.
updated_attimestamp(6) without time zoneزمان آخرین به‌روزرسانی رکورد.
deleted_attimestamp(6) without time zoneزمان حذف رکورد (حذف نرم).

روابط:

  • کلید خارجی parent_id به همان جدول (referenceparameters.id) ارجاع می‌دهد و امکان ساخت سلسله‌مراتب را فراهم می‌کند.

جدول equipment

FieldTypeشرح
idbigintشناسهٔ یکتای رکورد (کلید اصلی).
equipment_type_idbigintارجاع به نوع تجهیزات.
serial_numbercharacter varying(25)شمارهٔ سریال تجهیزات.
manufacture_datetimestamp(6) without time zoneتاریخ ساخت تجهیزات.
installation_datetimestamp(6) without time zoneتاریخ نصب تجهیزات.
program_versioncharacter varying(100)نسخهٔ نرم‌افزار تجهیزات.
created_attimestamp(6) without time zoneزمان ایجاد رکورد.
updated_attimestamp(6) without time zoneزمان آخرین به‌روزرسانی رکورد.

جدول channels

این جدول اطلاعات مربوط به کانال‌های تجهیزات را ذخیره می‌کند.

FieldTypeشرح
idbigintشناسهٔ یکتای رکورد (کلید اصلی).
equipment_type_idbigintارجاع به نوع تجهیزات (equipment_type.id).
unit_idbigintارجاع به واحد اندازه‌گیری (units.id).
namecharacter varying(100)نام کانال.
varnamecharacter varying(20)نام متغیر کوتاه برای کانال.
created_attimestamp(6) without time zoneزمان ایجاد رکورد.
updated_attimestamp(6) without time zoneزمان آخرین به‌روزرسانی رکورد.

روابط:

  • کلید خارجی equipment_type_id به جدول equipment_type ارجاع می‌دهد.
  • کلید خارجی unit_id به جدول units ارجاع می‌دهد.

جدول seances

این جدول اطلاعات مربوط به نشست‌های ارتباطی تجهیزات را ذخیره می‌کند.

FieldTypeشرح
idbigintشناسهٔ یکتای رکورد (کلید اصلی).
telemetry_idbigintارجاع به تله‌متری (telemetry.id).
event_timeintegerزمان رویداد.
evtidsmallintشناسهٔ رویداد.
trycntsmallintتعداد تلاش‌ها.
tryflcharacter varying(12)پرچم تلاش.
statesmallintوضعیت نشست.
btmintegerشارژ باتری.
rssiintegerقدرت سیگنال (در صورت استفاده).
created_attimestamp(6) without time zoneزمان ایجاد رکورد.
updated_attimestamp(6) without time zoneزمان آخرین به‌روزرسانی رکورد.

ساختار و روابط کلی

جدول اصلیchannel_data که داده‌های کانال را به تجهیزات، نشست‌ها و واحدها پیوند می‌دهد.

جدول‌های رابطه‌ای:

  • units — واحدهای اندازه‌گیری.
  • referenceparameters — انواع آرشیو و دیگر مشخص‌کننده‌ها.

جدول‌های تجهیزات:

  • equipment — اطلاعات تجهیزات.
  • channels — کانال‌های تجهیزات.

جدول نشست‌هاseances که اطلاعات مربوط به نشست‌های ارتباطی را ذخیره می‌کند.

نمونهٔ کاربرد:

  • داده‌های کانال (channel_data) از تجهیزات (equipment) در نشست‌های مشخص (seances) به‌دست می‌آیند.
  • هر کانال (channels) واحد اندازه‌گیری مخصوص خود (units) را دارد.
  • نوع آرشیو (referenceparameters) تعیین می‌کند که داده‌ها چگونه باید ذخیره یا پردازش شوند.

مزایای مدل یکپارچه

این مدل داده انعطاف‌پذیری و مقیاس‌پذیری لازم برای ذخیره و تحلیل داده‌های تجهیزات گوناگون را فراهم می‌کند.

برخی از مزایای مدل داده یکپارچه عبارت‌اند از:

  • سازگاری: داده‌ها در سراسر همهٔ سامانه‌ها ساختار و معنای یکسانی دارند.
  • مقیاس‌پذیری: افزودن منابع داده یا انواع تجهیزات جدید آسان است.
  • حفاظت از داده: سازوکارهای یکپارچهٔ احراز هویت، مجوزدهی و رمزنگاری.
  • تحلیل ساده‌تر: داده‌ها را می‌توان با ابزارهای یکپارچه تحلیل کرد.

انتزاع تجهیزات

انتزاع تجهیزات یک اصل کلیدی طراحی سامانه است که منطق پردازش داده را از ویژگی‌های فیزیکی تجهیزات جدا می‌کند. این موضوع به‌ویژه در سامانه‌هایی که از دستگاه‌های ناهمگن استفاده می‌کنند اهمیت دارد.

انتزاع تجهیزات به این معناست که سامانه داده‌ها را در سطحی منطقی پردازش می‌کند که مستقل از دستگاه‌های فیزیکی ذخیره‌کننده یا پردازش‌کنندهٔ داده است. این هدف از راه‌های زیر محقق می‌شود:

  • یکپارچه‌سازی رابط‌ها: یک شیوهٔ واحد برای دسترسی به داده‌ها، بدون توجه به تجهیزات.
  • پنهان‌سازی جزئیات پیاده‌سازی: مکان فیزیکی داده‌ها، پروتکل‌های انتقال و دیگر جنبه‌های فنی از برنامه‌ها پنهان می‌مانند.
  • مبدل‌ها (آداپتورها): تبدیل داده‌ها از قالب مخصوص تجهیزات به یک قالب یکپارچه.

پیاده‌سازی انتزاع تجهیزات

نمونهٔ زیر نشان می‌دهد که این رویکرد چگونه در سامانهٔ ما پیاده‌سازی شده است. این نمونه مسیر داده را از یک دستگاه IoT، عبور از یک مبدل، ورود به مدل داده یکپارچه و خروج از طریق API دنبال می‌کند.

یک دستگاه IoT را در نظر بگیرید که داده‌های مصرف گاز را ارسال می‌کند. الگوریتم‌های پیاده‌سازی‌شده به ما امکان می‌دهند:

  • داده‌ها را از طریق یک مبدل از دستگاه دریافت کنیم.
  • آن‌ها را به ساختار channel_data تبدیل کنیم.
  • آن‌ها را در پایگاه داده ذخیره کنیم.
  • دسترسی به داده‌ها را از طریق یک API فراهم کنیم.

برای هر نوع تجهیزات، مبدل‌هایی ایجاد می‌شوند که پروتکل‌های مخصوص دستگاه را مدیریت کرده و داده‌ها را به یک قالب یکپارچه تبدیل می‌کنند.

نمونه: تبدیل داده

برای یک دستگاه IoT، داده‌ها می‌توانند در قالب JSON برسند:

example.json
{
  "device_id": "sensor-123",
  "timestamp": 1739950861,
  "value": 42.5
}

مبدل داده‌ها را به ساختار channel_data تبدیل می‌کند:

example.sql
INSERT INTO channel_data (equipment_id, seance_id, channel_id,
 archive_type_id, value, event_time)
VALUES (1, 2, 3, 4, '42.5', 1739950861);

درخواست داده:

Request example
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3

پاسخ:

Response example
[
  {
    "id": 123,
    "equipment_id": 1,
    "seance_id": 2,
    "channel_id": 3,
    "archive_type_id": 4,
    "value": 42.5,
    "event_time": 1739950861
  }
]

مزایای انتزاع تجهیزات

  • استقلال از سخت‌افزار: برنامه‌ها با داده‌ها کار می‌کنند بدون آنکه بدانند داده‌ها از نظر فیزیکی کجا قرار دارند.
  • انعطاف‌پذیری: افزودن دستگاه‌های جدید یا تغییر دستگاه‌های موجود به‌آسانی انجام می‌شود.
  • توسعهٔ ساده‌تر: توسعه‌دهندگان با موجودیت‌های انتزاعی کار می‌کنند بدون آنکه نگران جزئیات سخت‌افزاری باشند.
  • مقیاس‌پذیری: داده‌ها را می‌توان بر روی دستگاه‌های گوناگون ذخیره کرد، اما سامانه به‌شیوه‌ای یکسان به کار خود ادامه می‌دهد.

نرمال‌سازی داده

نرمال‌سازی داده فرایند سازمان‌دهی داده‌ها در یک پایگاه داده به‌گونه‌ای است که افزونگی را به کمینه می‌رساند و یکپارچگی داده را بهبود می‌بخشد. در زمینهٔ لایه داده انتزاعی، نرمال‌سازی نقشی کلیدی در ایجاد یک مدل داده یکپارچه و کارآمد ایفا می‌کند که می‌توان از آن برای مدیریت انواع گوناگون تجهیزات و منابع داده استفاده کرد.

نرمال‌سازی داده، داده‌ها را به جدول‌های منطقی تقسیم می‌کند و روابطی میان آن‌ها برقرار می‌سازد تا:

  • داده‌های تکراری حذف شوند.
  • نگه‌داری و به‌روزرسانی داده‌ها ساده شود.
  • یکپارچگی داده تضمین شود.
  • کارایی پرس‌وجوها بهبود یابد.

مدل داده یکپارچهٔ سامانه از نظر مقادیر اتمی (نرده‌ای) به فرم نرمال (سوم) بویس-کاد تقلیل یافته است. برخی از موجودیت‌های مدل داده برای بهینه‌سازی مدیریت صفت‌های نادر و غیراستاندارد از ساختارهای مرکب استفاده می‌کنند.

مزایای نرمال‌سازی

  • حذف افزونگی: داده‌ها در یک مکان ذخیره می‌شوند و افزونگی کاهش می‌یابد.
  • سازگاری داده: حفظ سازگاری داده‌ها ساده‌تر می‌شود.
  • انعطاف‌پذیری: ایجاد تغییر در ساختار داده‌ها آسان است.
  • کارایی: کارایی پرس‌وجوها بهبود می‌یابد (در بیشتر موارد).

نرمال‌سازی در زمینهٔ لایه داده انتزاعی

نرمال‌سازی داده گامی مهم در طراحی لایه داده انتزاعی است.

این کار به شما امکان می‌دهد:

  • یک مدل داده یکپارچه ایجاد کنید که می‌توان از آن برای مدیریت انواع گوناگون تجهیزات استفاده کرد.
  • افزونگی و تکرار داده‌ها را حذف کنید.
  • یکپارچگی و سازگاری داده‌ها را بدون توجه به منبع آن‌ها تضمین کنید.
  • یکپارچه‌سازی دستگاه‌ها و سامانه‌های جدید را ساده کنید.

موضوعات مرتبط

آخرین به‌روزرسانی در

آیا این صفحه مفید بود؟