Aliran Peristiwa Data Tertaut dan TimescaleDB untuk Rangkaian Waktu Real-time… – Menuju AI

Linked Data Event Streams, TimescaleDB, Timeseries, Linked Data Event Streams, Linked Data Event Streams, Linked Data Event Streams, LDES

Pengarang: Samuel Van Ackere

Awalnya diterbitkan di Menuju AI.

Cara mengonsumsi Aliran Peristiwa Data Tertaut dan menyimpannya di database TimescaleDB

Aliran Peristiwa Data Tertaut, TimescaleDB, Rangkaian Waktu, Aliran Peristiwa Data Tertaut, Aliran Peristiwa Data Tertaut, Aliran Peristiwa Data Tertaut, LDESFoto oleh Scott Graham di Unsplash

Aliran peristiwa data tertaut

Aliran Peristiwa Data Tertaut mewakili dan berbagi data yang bergerak cepat dan lambat di Web menggunakan Resource Description Framework (RDF). Ini memungkinkan data untuk ditautkan dan dihubungkan ke sumber data lain menggunakan pengidentifikasi unik (URI).

Aliran Peristiwa Data Tertaut adalah aliran peristiwa data dari sekelompok objek yang tidak dapat diubah yang dideskripsikan sebagai RDF yang dapat dibaca mesin (seperti pengamatan sensor, register alamat, atau data keuangan).

Aliran Peristiwa Data Tertaut dijelaskan dalam 8 menit

Aliran LDES menyediakan cara yang fleksibel dan dapat dioperasikan untuk menjelaskan dan bertukar peristiwa sebagai Data Tertaut, memungkinkan sistem dan aplikasi yang berbeda untuk dengan mudah menggunakan dan bertindak pada aliran data dengan cara yang konsisten dan standar.

Artikel ini menunjukkan cara memasukkan data sensor dalam bentuk LDES ke database TimescaleDB dengan mudah.

Mengelola sejumlah besar data deret waktu

TimescaleDB adalah database sumber terbuka untuk menyimpan dan menanyakan data deret waktu dalam jumlah besar. Ini memperluas PostgreSQL dengan dukungan deret waktu, menawarkan fitur seperti penyerapan cepat dan kueri data besar, perincian data fleksibel, dan penyimpanan data jangka panjang.

Aliran Peristiwa Data Tertaut, Aliran Peristiwa Data Tertaut, Aliran Peristiwa Data Tertaut, Aliran Peristiwa Data Tertaut, TimescaleDB, Data tertautMasukkan perbandingan kinerja antara TimescaleDB 2.7.2 dan PostgreSQL 14.4

TimescaleDB adalah sistem basis data yang kuat dan efisien yang sangat cocok untuk menyimpan dan menanyakan data deret waktu dalam skala besar. Ini banyak digunakan dalam berbagai aplikasi, termasuk IoT, keuangan, dan telemetri.

Pertama, aliran data harus dikonfigurasi untuk menyerap Aliran Peristiwa Data Tertaut ke PostgreSQL. Ini dapat dilakukan di lingkungan Apache NiFi.

LDES ke TimeScaleDB

Untuk mempertahankan LDES dalam database, kami menggunakan platform Apache NiFi. Apache NiFi adalah pemrosesan data sumber terbuka, dan platform integrasi yang dirancang untuk mengotomatiskan aliran data antar sistem. Ini menyediakan antarmuka pengguna berbasis web untuk membuat, mengelola, dan memantau aliran data dan serangkaian konektor dan prosesor yang telah dibuat sebelumnya untuk melakukan tugas pemrosesan data.

Aliran Peristiwa Data Tertaut dan TimescaleDB untuk Manajemen Data Deret Waktu Real-timePipa data di Apache NiFi (gambar oleh penulis)

Untuk mengonsumsi aliran LDES, prosesor klien LDES diperlukan dalam aliran Apache NiFi. Klien LDES adalah komponen yang mampu mengonsumsi, memproses, dan menganalisis peristiwa di aliran.

Output dari Klien LDES (bekerja dengan LDES berikut):

_:B5edf92f59913b8d14f45818d5bde1d51 .
_:B5edf92f59913b8d14f45818d5bde1d51 .
_:B5edf92f59913b8d14f45818d5bde1d51 “2022-11-09T20:30:00.000Z”^^ .
_:B5edf92f59913b8d14f45818d5bde1d51 _:B727a9b2b6a6311cc83b677d439f4cf68 .
_:B5edf92f59913b8d14f45818d5bde1d51 .
_:B6003104aae33209ee0e6a26e14ba38cb “1.152E1″^^ .
_:Bec20a7e293639ee5a985d621d7b2d6d5 .
_:Bec20a7e293639ee5a985d621d7b2d6d5 .
_:Bec20a7e293639ee5a985d621d7b2d6d5 “2022-11-09T20:30:00.000Z”^^ .
_:Bec20a7e293639ee5a985d621d7b2d6d5 _:Bdd20913615f9b4c0169c7770bdc770d4 .
_:Bec20a7e293639ee5a985d621d7b2d6d5 .
_:Bdd20913615f9b4c0169c7770bdc770d4 _:B6003104aae33209ee0e6a26e14ba38cb .
.
_:B5edf92f59913b8d14f45818d5bde1d51 .
_:B3105a27f0059867877fb28653f5a6abc .
_:Bec20a7e293639ee5a985d621d7b2d6d5 .
.
” 2022-11-09T20:30:00.000Z”^^ .
” spt-00029-97″ .
_:B3105a27f0059867877fb28653f5a6abc .
_:B3105a27f0059867877fb28653f5a6abc .
_:B3105a27f0059867877fb28653f5a6abc “2022-11-09T20:30:00.000Z”^^ .
_:B3105a27f0059867877fb28653f5a6abc _:B2598b988faa2635d5dd520f59f376b8e .
_:B3105a27f0059867877fb28653f5a6abc .
.
_:B727a9b2b6a6311cc83b677d439f4cf68 _:B9776c69148d2ef600aed62aa2c85bd40 .
_:B2598b988faa2635d5dd520f59f376b8e _:B436b5950c7725d6d9a38aaf6ca88b00f .
_:B9776c69148d2ef600aed62aa2c85bd40 “1120”^^ .
_:B436b5950c7725d6d9a38aaf6ca88b00f “673”^^ .

Berikutnya dalam alur Apache NiFi adalah komponen materialisasi versi. “Perwujudan versi” mengacu pada proses menghapus informasi versi dari anggota LDES dan mengembalikannya untuk merekonstruksi objek “status”, yang hanya mencerminkan status anggota LDES saat ini tanpa informasi historis tentang perubahan.

Materialisasi versi diperlukan karena konsumen tidak ingin menyimpan versi ini dalam database.

Data pertama-tama dikonversi ke JSON-LD untuk mengonversi ke struktur tabular dengan mudah. File JSON-LD ini terlihat seperti ini:

{
“@id” : “urn:ngsi-v2:cot-imec-be:WaterQualityObserved:dwg-iow-g9kEXxUeP28TNc6wJvFsau”,
“@type” : “Koleksi pengamatan”,
“Pengambilan sampel objek collection.member” : [ {
“@id” : “_:b8”,
“@type” : “Meting”,
“Observatie.geobserveerdKenmerk” : “https://data.vmm.be/concept/waterkwaliteitparameter/temperatuur”,
“Observatie:.phenomenonTime” : {
“@type” : “http://www.w3.org/2001/XMLSchema#datetime”,
“@value” : “2022-11-09T19:30:00.000Z”
},
“Observatie.resultaat” : {
“@id” : “_:b6”,
“Maat.maat” : {
“@id” : “_:b1”,
“https://schema.org/value” : {
“@type” : “http://www.w3.org/2001/XMLSchema#double”,
“@value” : “1.153E1”
}
}
},
“Observatie.uitgevoerdMetSensor” : “urn:ngsi-v2:cot-imec-be:Device:dwg-iow-8JgF3vxoYKoXzwWGUiX3Yc”
}, {
“@id” : “_:b3”,
“@type” : “Meting”,
“Observatie.geobserveerdKenmerk” : “https://data.vmm.be/concept/waterkwaliteitparameter/conductiviteit”,
“Observatie:.phenomenonTime” : {
“@type” : “http://www.w3.org/2001/XMLSchema#datetime”,
“@value” : “2022-11-09T19:30:00.000Z”
},
“Observatie.resultaat” : {
“@id” : “_:b4”,
“Maat.maat” : {
“@id” : “_:b5”,
“https://schema.org/value” : {
“@type” : “http://www.w3.org/2001/XMLSchema#integer”,
“@value” : “920”
}
}
},
“Observatie.uitgevoerdMetSensor” : “urn:ngsi-v2:cot-imec-be:Device:dwg-iow-8JgF3vxoYKoXzwWGUiX3Yc”
}, {
“@id” : “_:b7”,
“@type” : “Meting”,
“Observatie.geobserveerdKenmerk” : “https://data.vmm.be/concept/observatieparameter/hydrostatische-druk”,
“Observatie:.phenomenonTime” : {
“@type” : “http://www.w3.org/2001/XMLSchema#datetime”,
“@value” : “2022-11-09T19:30:00.000Z”
},
“Observatie.resultaat” : {
“@id” : “_:b2”,
“Maat.maat” : {
“@id” : “_:b0”,
“https://schema.org/value” : {
“@type” : “http://www.w3.org/2001/XMLSchema#integer”,
“@value” : “11133”
}
}
},
“Observatie.uitgevoerdMetSensor” : “urn:ngsi-v2:cot-imec-be:Device:dwg-iow-8JgF3vxoYKoXzwWGUiX3Yc”
} ],
“http://www.w3.org/ns/prov#generatedAtTime” : {
“@type” : “http://www.w3.org/2001/XMLSchema#dateTime”,
“@nilai” : “2022-11-09T19:30:00.000Z”
},
“http://www.w3.org/ns/sosa/hasFeatureOfInterest” : “spt-00027-06”
}

Selanjutnya, diperlukan transformasi menjadi struktur tabular dan dapat dilakukan melalui kueri SPARQL atau transformasi JOLT. Untuk kasus ini, saya menggunakan transformasi JOLT. Transformasi JOLT memfilter parameter yang relevan dan menempatkannya dalam file JSON terstruktur (lihat keluaran di bawah).

{
“id”: “guci:ngsi-v2:cot-imec-be:WaterQualityObserved:dwg-iow-9NQCQNb4dJZ5J8kTACzdVn”,
“suhu_nilai”: “1.152E1”,
“temperature_date”: “2022-11-09T20:30:00.000Z”,
“temperature_sensor”: “guci:ngsi-v2:cot-imec-be:Perangkat:dwg-iow-csHTUVdGuPYK89L34yi88j”,
“conductivity_value”: “1120”,
“conductivity_date”: “2022-11-09T20:30:00.000Z”,
“conductivity_sensor”: “guci:ngsi-v2:cot-imec-be:Perangkat:dwg-iow-csHTUVdGuPYK89L34yi88j”,
“hydro_pressure_value”: “673”,
“hydro_pressure_date”: “2022-11-09T20:30:00.000Z”,
“hydro_pressure_sensor”: “guci:ngsi-v2:cot-imec-be:Perangkat:dwg-iow-csHTUVdGuPYK89L34yi88j”
}

Setelah transformasi ini, data dapat ditulis ke database PostgreSQL atau TimescaleDB. Analisis yang dapat dilakukan dengan data di database TimescaleDB mencakup namun tidak terbatas pada visualisasi deret waktu, deteksi anomali, peramalan, dan agregasi data deret waktu dalam berbagai interval waktu.

Aliran Peristiwa Data Tertaut dan TimescaleDB untuk Manajemen Data Deret Waktu Real-time(gambar oleh penulis)

Kode lengkap

Untuk mereplikasi aliran data dalam artikel ini, buka repo GitHub LDES2TimescaleDB. Ini menjelaskan cara mengatur TimescaleDB dan Apache NiFi yang di-docker, setelah itu aliran data dapat dimulai menggunakan file pengaturan Apache NiFi yang disediakan.

GitHub – samuvack/LDES2TimescaleDB: kelola rangkaian waktu anggota LDES di TimescaleDB

Membungkus

Aliran Peristiwa Data Tertaut adalah API inti dari data yang bergerak cepat dan lambat. Ini adalah aliran peristiwa data dari sekelompok objek yang tidak dapat diubah yang digambarkan sebagai RDF yang dapat dibaca mesin (seperti pengamatan sensor, register alamat, atau data keuangan).

Untuk menulis LDES ke database PostgreSQL atau TimescaleDB, alur konversi data dikonfigurasikan di Apache NiFi.

Dengan artikel Medium ini sebagai pedoman, Anda harus dapat menulis Aliran Peristiwa Data Tertaut ke database TimescaleDB.

Jika Anda menyukai apa yang Anda baca, pastikan untuk ❤️ itu — sebagai seorang penulis, itu berarti dunia. Tetap terhubung dengan mengikuti saya sebagai penulis.

Kontributor artikel ini adalah ddvlanck (Dwight Van Lancker) (github.com), sandervd (Sander Van Dooren) (github.com) di Smart Data Space (Digital Flanders, Belgia). Dalam masyarakat yang berubah dengan cepat, pemerintah harus lebih gesit dan tangguh dari sebelumnya. Digital Flanders menyadari dan mengawasi proyek transformasi digital untuk Flemish dan pemerintah daerah.

Aliran Peristiwa Data Tertaut dan TimescaleDB untuk Manajemen Data Seri Waktu Nyata awalnya diterbitkan di Towards AI on Medium, di mana orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Scott Anderson