Je suis en train de planifier le développement d'un service qui devrait gérer une quantité importante de requêtes et pour chaque requête faire un peu de journalisation. Chaque journal aura la forme suivanteUtilisation de NoSQL sur des données avec peu de relations
{event: "EVENTTYPE", userid: "UID", itemid: "ITEMID", timestamp: DATETIME}
Je pense que beaucoup d'écriture se fera, lors de la lecture et l'analyse ne sera effectué une fois par heure.
Une exigence dans l'analyse des données est que je dois être en mesure d'effectuer la requête suivante: Les deux événements, A et B, sur l'élément (ITEMID) sont-ils enregistrés pour l'utilisateur (UID)? (Peut-être même dire si l'événement A est arrivé avant l'événement B en fonction de leur horodatage)
J'ai pensé à MongoDB comme solution de stockage.
- La requête ci-dessus peut-elle (correctement) être réalisée par le framework d'agrégation MongoDB?
- À l'avenir, je pourrais ajouter à l'étape de l'analyse, avec une relation de ITEMID à ITEM.Categories (j'ai une collection d'éléments, et chaque élément a une série de catégories). Il serait peut-être intéressant de savoir combien de fois l'événement A s'est produit sur les articles regroupés par catégorie d'articles individuels, au cours des 30 derniers jours. MongoDB sera-t-il alors un bon choix pour mes besoins?
Quelques informations sur les données avec lesquelles je vais travailler: Je m'attends à être connecté dans l'ordre de 10.000 événements par jour en moyenne. Je n'ai pas encore décidé si les données devraient être stockées indéfiniment.
- Est-ce que MongoDB convient à mes besoins? Y a-t-il une autre base de données NoSQL qui répondra mieux à mes besoins? Est-ce que NoSQL est encore utilisable dans ce cas ou est-ce que je préfère coller avec des bases de données relationnelles?
- Si mon exigence de la fréquence d'analyse change, disons de une fois par heure à temps réel. Je crois que Redis servirait mieux mon but que MongoDB, est-ce bien compris?
Vous avez de bonnes intentions ici, mais vos questions globales sont beaucoup trop générales. Pouvez-vous réduire cela à quelque chose de spécifique qui convient mieux à une seule réponse? C'est généralement ce qui est requis de ce site. –