MongoDb Streaming Out Inserted Data σε πραγματικό χρόνο (ή σχεδόν σε πραγματικό χρόνο)

Έχω μια σειρά από συλλογές MongoDB που παίρνουν έναν αριθμό εγγράφων JSON από διάφορες πηγές ροής. Με άλλα λόγια υπάρχει μια σειρά από διαδικασίες που εισάγουν συνεχώς δεδομένα σε ένα σύνολο συλλογών MongoDB.

Χρειάζομαι έναν τρόπο για να μεταφέρω τα δεδομένα από το MongoDB σε μεταγενέστερες εφαρμογές. Θέλω λοιπόν ένα σύστημα που μοιάζει εννοιολογικά με αυτό:

App Stream1 --> 
App Stream2 -->     MONGODB     --->  Aggregated Stream
App Stream3 -->

Ή αυτό:

App Stream1 -->                 --->  MongoD Stream1
App Stream2 -->     MONGODB     --->  MongoD Stream2
App Stream3 -->                 --->  MongoD Stream3

Το ερώτημα είναι πώς μπορώ να μεταφέρω δεδομένα από το Mongo χωρίς να χρειάζεται να κάνω συνεχώς δημοσκόπηση / ερώτηση της βάσης δεδομένων;

Η προφανής απάντηση στην ερώτηση θα ήταν "Γιατί δεν αλλάζετε αυτές τις διαδικασίες ροής εφαρμογών για να στέλνετε μηνύματα σε μια ουρά όπως το Rabbit, το Zero ή το ActiveMQ, το οποίο στη συνέχεια τα στέλνει στις διεργασίες ροής Mongo και στο Mongo ταυτόχρονα έτσι":

                 MONGODB
                   /|\  
                    |
App Stream1 -->     |          --->  MongoD Stream1
App Stream2 -->  SomeMQqueue   --->  MongoD Stream2
App Stream3 -->                --->  MongoD Stream3

Σε έναν ιδανικό κόσμο, ναι καλό, αλλά χρειαζόμαστε το Mongo για να διασφαλίσουμε ότι τα μηνύματα αποθηκεύονται πρώτα, για να αποφεύγονται τα διπλά και να διασφαλίζεται ότι όλα τα αναγνωριστικά δημιουργούνται κ.λπ. Το Mongo πρέπει να καθίσει στη μέση ως το επίπεδο επιμονής.

Λοιπόν, πώς μπορώ να μεταφέρω μηνύματα από μια συλλογή Mongo (χωρίς χρήση του GridFS κ.λπ.) σε αυτές τις εφαρμογές ροής. Η βασική σχολή σκέψης ήταν η απλή δημοσκόπηση για νέα έγγραφα και κάθε έγγραφο που συλλέγεται ενημερώνεται με την προσθήκη ενός άλλου πεδίου στα έγγραφα JSON που είναι αποθηκευμένα στη βάση δεδομένων, σαν μια σημαία διαδικασίας σε έναν πίνακα SQL που αποθηκεύει μια επεξεργασμένη χρονική σφραγίδα. Δηλαδή κάθε 1 δευτερόλεπτο δημοσκόπηση για έγγραφα όπου υποβάλλονται σε επεξεργασία == null .... προσθήκη επεξεργασμένου = τώρα () .... ενημέρωση εγγράφου.

Υπάρχει μια πιο καθαρή / πιο υπολογιστικά αποδοτική μέθοδος;

FYI -Αυτές είναι όλες οι διαδικασίες Java.

Χαιρετισμοί!

6
задан Community 22 September 2017 в 18:01
поделиться