Je grappe une série de produits de sites Web et les stocke dans une base de données. En ce moment, j'utilise MySQL, avec deux tables:NoSQL (MongoDB/DynamoDB) Schema
products (product_id, site, product_description, etc)
e.g. (1234, "xyz.com", "nice product", etc)
product_history (product_id, scrape_timestamp)
e.g. (1234, 2012-01-02 10:53:09)
(1234, 2012-01-03 11:02:09)
Ce schéma signifie que je peux obtenir un instantané dont les produits ont été répertoriés à tout moment dans le passé.
Je considère un passage à NoSQL parce que (i) j'obtiens souvent différents champs de différents sites et (ii) le volume de données sera environ 5-10m produits par an. Je vois deux façons de structurer le schéma
Option 1: "liste intégrée"
product_id, site, product_description, scrape_timestamp
1234, "xyz.com", "test product", {2012-01-02 10:53:09, 2012-01-03 11:02:09}
Option 2: "index secondaire"
keep both tables as above with the relational schema
Je pense que l'option 1 fonctionnerait dans quelque chose comme MongoDB où les index secondaires sont autorisés tandis que l'option 2 fonctionnerait dans MongoDB ou DynamoDB. (Je considère ces deux parce que je veux quelque chose hébergé dans le nuage avec zéro frais généraux de maintenance pour moi).
Suis-je sur la bonne voie avec ces approches? Lequel fonctionnerait le mieux? Je ne suis pas familier avec nosql donc tout conseil serait apprécié.
Je ne pense pas que le problème du volume de données soit un argument valable dans les deux cas. Les produits 5-10m devraient être réalisables dans chaque solution. – Joe
Que diriez-vous de la limite pour que MySQL fonctionne bien sur un serveur? J'ai aussi d'autres tables (qui ont plusieurs rangées par produit) et, y compris celles-ci, j'arrive seulement à environ 1 produit écrit par seconde ... en espérant que nosql pourrait améliorer les performances d'écriture aussi – alan
La réponse à cela est très variable, mais cela indique quelque chose de grave. Je m'attendrais à être capable de commettre des centaines, sinon des milliers, de lignes par seconde. Comment insérez-vous des enregistrements individuels? – Joe