Saya perlu membuat database deret waktu, dan melakukan tugas-tugas berikut:
- buat seri waktu baru
- perbarui deret waktu yang ada
- permintaan satu atau beberapa seri waktu sekaligus (misalnya semua seri waktu untuk tanggal yang sama dll ...)
Apakah Mongo disesuaikan dengan itu dan jika ya, bagaimana saya harus menyusun database? (satu kali seri = satu dokumen? Atau satu dokumen = satu entri dari seri waktu, dan semua dokumen ini merupakan kumpulan yang merupakan seluruh rangkaian waktu?)
Saya agak tersesat di sini dan saya merasa sulit untuk menemukan informasi karena biasanya Mongo disajikan sangat fleksibel sehingga pengguna memiliki pilihan dalam infrastruktur.
Setiap tautan ke tutorial yang secara khusus menjelaskan cara mengelola deret waktu dalam bahasa Mongo sangat disambut.
Terima kasih!
Jawaban:
Saya menyarankan entri seri waktu tunggal per dokumen. Ada beberapa masalah dengan menyimpan beberapa entri per dokumen:
Perhatikan juga stempel waktu bawaan ke ObjectId MongoDB default . Anda dapat menggunakan ini jika ketepatan deret waktu kurang dari satu detik.
Berikut adalah contoh dokumen BSON dari pustaka pencatatan peristiwa yang menggunakan MongoDB :
Karena log peristiwa mirip dengan rangkaian waktu, mungkin ada baiknya mempelajari sisa kode . Ada versi dalam Java, C #, PHP, dan Python.
Berikut ini adalah proyek open source serupa lainnya: Zarkov
[pembaruan] Menanggapi komentar @ RockScience, saya telah menambahkan beberapa referensi lagi:
sumber
Saya menemukan pertanyaan ini di SO ( /programming/4814167/storing-time-series-data-relational-or-non ) di mana OP menanyakan cara menyimpan seri waktu. Meskipun pertanyaannya lebih didasarkan pada menggunakan database NoSQL atau RDBMS, dan Anda tampaknya cukup menggunakan NoSQL db.
Juga ditemukan artikel ini pada " Persyaratan Basis Data Unik untuk Data Seri Waktu " yang mungkin berguna.
Semoga ini membantu.
sumber
Ya tentu saja, basis data NoSQL lebih baik menyimpan data jadwal waktu daripada RDBMS tradisional.
Ya MongoDB sangat disesuaikan dengan kasus penggunaan ini.
-Bagaimana seharusnya Anda menyusun basis data? Satu dokumen = satu input seri waktu VS seri waktu ganda.
Jawabannya adalah menyimpan dalam satu dokumen beberapa kali pengaturan waktu. Memiliki lebih sedikit dokumen akan membantu kinerja dengan lebih sedikit membaca. Salah satu triknya adalah menyiapkan dokumen Anda dengan nilai yang telah ditentukan. Ini akan mengoptimalkan memperbarui dokumen dengan menghindari Padding Catatan .
Berikut adalah contoh skema tentang cara menyimpan jam waktu senilai satu jam secara optimal dengan interval menit:
Anda memulai dengan nilai 0, dan kemudian pembaruan akan dioptimalkan. Bacaan dioptimalkan karena satu dokumen dibaca bukan 60. Jika Anda perlu menyimpan data satu hari, atau sebulan Anda melanjutkan dengan teknik yang sama, Anda mendapatkan ide.
Berikut tautan ke tutorial yang secara khusus menjelaskan cara mengelola rangkaian waktu dalam MongoDb dari Blog MongoDb resmi: http://blog.mongodb.org/post/65517193370/schema-design-for-time-series-data-in- mongodb
sumber