Database backend mana yang cocok untuk implementasi IoT

15

Saya harus menyediakan layanan IoT untuk pelanggan saya. Komponen MQTT, Kafka dan Rest Services akan digunakan untuk menelan data dari perangkat ke database. Saya perlu melakukan beberapa analitik atas data di backend. Ukuran data akan menjadi 135 byte / perangkat dan 6000 perangkat / detik. Saya telah berbagi arsitektur di sini untuk memahami persyaratan dan komponen.

masukkan deskripsi gambar di sini

Saya telah menyelidiki tentang penyimpanan data (MongoDB, Postgresql (TimescaleDB), Redis, Neo4j, Cassandra) dan setiap vendor membuktikan bahwa database mereka cocok untuk kasus penggunaan IoT. Saya bingung tentang menggunakan database IoT yang teruji / paling dapat diandalkan / terukur.

Basis data apa yang paling cocok untuk mencerna data sebanyak ini dan melakukan analisis?

Apakah ada tolok ukur yang terbukti untuk database yang sesuai untuk IOT?

Tolong berikan pemikiran dan saran Anda.

Mourish Khan
sumber
Saya menggunakan ElasticSearch untuk kasus penggunaan serupa baru-baru ini. Tapi saya tidak bisa mengatakan mengapa itu lebih baik daripada yang lain, sebagian besar didasarkan pada pendapat. Saya benar-benar menggunakan Kafka untuk menghubungkan sensor ke DB. Ada perpustakaan bagus yang mendukung pemrosesan aliran Kafka dengan
Elasticsearch
2
"Kasus penggunaan IoT" terlalu luas untuk implementasi peringkat. Masing-masing memiliki kekuatan dan kelemahannya.
Gilles 'SO- stop being evil'
1
Bukan bidang saya, tapi saya akan terkejut jika ada db modern akan terlihat seperti cocok di sini. Gunakan apa yang Anda kenal, atau memiliki perkakas paling bersinar.
Sean Houlihane

Jawaban:

4

Anda terbatas pada basis data NoSQL, karena basis data SQL apa pun tidak akan mengizinkan Anda 6K TPS langsung di server atau Anda dapat menggunakan layanan cloud atau platform SaaS yang sudah terspesialisasi dalam operasi semacam itu - mis. Menerima data telematika melalui MQTT / Kafka, membaginya dan menyimpan untuk 6000 perangkat ini dan menyediakan REST API sederhana untuk mengakses data telemetri. Seperti flespi atau apa pun yang serupa.

shal
sumber
mendapatkan poin Anda dan terima kasih. Bisakah Anda memberi tahu saya basis data NoSQL apa yang paling cocok untuk kasus penggunaan saya?
Mourish Khan
Itu benar-benar tergantung pada pengalaman Anda dan lingkungan runtime. Untuk AWS / GoogleCloud itu akan menjadi satu pilihan, untuk instalasi lokal saya akan merekomendasikan kepada LevelDB atau kompetitornya, cukup cari levelDB di google dan Anda akan melihat daftar lengkapnya. Dalam varian apa pun Anda perlu menerapkan API perantara antara aplikasi web dan database, jadi itu juga tergantung pada jenis backend yang Anda gunakan untuk ini. Kasus Anda persis seperti yang dijelaskan dalam artikel ini , saat Anda mengisi data dengan mqtt dan mengaksesnya serta riwayat dari web.
shal
1
btw, saya sudah mencoba dalam 15 tahun terakhir banyak dari database NoSQL ini. Dimulai dari Berkeley DB pada usia dini. Pada akhirnya, ketika Anda membutuhkan kekuatan penuh dan kinerja dalam aplikasi Anda dan mencoba untuk memeras dari basis data TIO maksimum dan throughput saya tidak menemukan cara lain, selain mengembangkan mesin basis data sendiri, yang secara khusus ditargetkan untuk kasus penggunaan dan persyaratan telematika (IoT). Tapi itu pengalaman saya +)
shal
"6K TPS" ?? 6tB / detik?
Mawg mengatakan mengembalikan Monica
6.000 transaksi / detik
shal
4

IoT cukup banyak data deret waktu. Ada beberapa TSDB di luar sana: InfluxDB, OpenTSDB, GridDB, dll. Mereka semua memiliki versi komunitas / oss sehingga Anda dapat melihat apakah itu sesuai dengan kebutuhan Anda. InfluxDB adalah yang populer tetapi perhatikan bahwa pengelompokan hanya tersedia untuk versi berbayar. OpenTSD murni oss, dan GridDB menyatakan itu berorientasi pada IoT dan lebih cepat daripada InfluxDB. Tergantung pada kebutuhan Anda, mungkin Anda ingin mencari yang memiliki konsumsi cepat.

Codelicious
sumber
2

Timescaledb, ekstensi postgres yang dikustomisasi untuk rangkaian waktu berfungsi dengan sangat baik. Dan Anda mendapatkan fitur basis data relasional yang biasa, penggunaan SQL, keandalan, indeks, skalabilitas.

IOTdev
sumber
1

Pertanyaannya luas dan tidak ada jawaban akurat yang dapat diberikan, tetapi tautan ini dapat membantu:

http://outlyer.com/blog/top10-open-source-time-series-databases/ masukkan deskripsi gambar di sini

Tindak lanjuti dengan tolok ukur: http://outlyer.com/blog/time-series-database-benchmarks/

Perbandingan lainnya: https://gist.github.com/sacreman/00a85cf09251147175241d334aafa798

Saya menetapkan beberapa aturan untuk mencoba membatasi ruang lingkup jika tidak, blog ini tidak akan pernah berakhir.

Hanya basis data seri waktu bebas dan sumber terbuka dan fitur-fiturnya yang dibandingkan. Oleh karena itu seseorang bertanya, "Sudahkah Anda mencoba Kdb + dan Informix?" Jawabannya tidak. Mereka mungkin luar biasa.

Daftar ini hanya akan menyertakan basis data yang mengklasifikasikan diri mereka sendiri dalam materi pemasaran mereka sebagai seri waktu, atau telah ditulis dalam blog oleh perusahaan keren sebagai sesuatu yang mereka gunakan untuk data deret waktu.

Apa yang telah dilakukan adalah membaca dokumen resmi, membaca StackOverflow, melihat melalui masalah dan kode Github dan umumnya meretas informasi bersama. Dengan mengingat hal ini, beberapa fakta mungkin salah.

Jika ada yang menemukan kesalahan faktual, beri tahu saya dan saya akan memperbarui blog.

Benchmarking didasarkan pada klaim dan estimasi pemasaran. Mengapa? Karena pembandingan adalah bagian dari pekerjaan yang cukup besar dan rawan kesalahan. Anda selalu mendapatkan "Anda harus menyetel pengaturan tidak berdokumen khusus ini". Angka-angka yang tercantum sangat menguntungkan bagi sebagian besar database. Mereka adalah nomor yang di-blog-kan tentang atau diklaim di Twitter pada suatu waktu di masa lalu. Jika Anda merasa ada angka yang salah, beri tahu saya dan saya akan memperbaruinya.

FarO
sumber
0

Selain jawaban sebelumnya, saya juga merekomendasikan untuk melihat Tarantool , ClickHouse dan ScyllaDB . Solusi ini lebih dari cukup untuk sebagian besar kasus.

Kecuali bahwa dalam beberapa situasi, terutama untuk penyematan, MDBX (atau sesuatu seperti itu) mungkin berguna.

Leo Yuriev
sumber
2
Apakah Anda ingin menguraikan mengapa Anda merekomendasikan ini?
Helmar