Question

Pour autant que je sache, les index CouchDB sont mis à jour lorsqu’une vue est interrogée. En supposant qu'il y ait plus de lectures que d'écritures, n'est-ce pas mauvais pour la mise à l'échelle? Comment pourrais-je configurer CouchDB pour mettre à jour les index en écriture, ou mieux encore, selon un calendrier?

Était-ce utile?

La solution

CouchDB régénère les vues lors de la mise à jour, mais uniquement de ce qui a changé depuis le dernier accès en lecture à la vue. En supposant que votre volume de lecture soit largement supérieur à votre volume en écriture, cela ne devrait pas poser de problème.

Lorsque vous modifiez simultanément un grand nombre de documents, vous risquez de perdre un temps considérable lors de la première demande de lecture. Pour remédier à cela, différentes possibilités ont été suggérées. La plupart dépendent de l’enregistrement avec les notifications de mise à jour de CouchDB et du déclenchement automatique de la lecture.

Un exemple de script permettant de faire exactement cela est disponible sur le wiki CouchDB à l'adresse [1].

[1] http://wiki.apache.org/couchdb/RegeneratingViewsOnUpdate" rel="noreferrer"> http://wiki.apache.org/couchdb/RegeneratingViewsOnUpdate" rel="noreferrer"> http://wiki.apache.org/couchdb/RegeneratingViewsOnUpdate" <= p>

Autres conseils

Vous ne pouvez pas et pourquoi voudriez-vous cela?

Pensez-y comme ça:

  • Lorsque vous importez des données dans MySQL, vous pouvez activer indignes, car il est plus coûteux de mettre à jour l'index pour chaque ligne que vous insérez que de mettre à jour l'index pour 100 écritures (ou le nombre de lignes que vous importez) en une seule exécution. .
  • C’est pourquoi CouchDB met à jour l’index en lecture car il est moins coûteux d’intégrer ces 100 modifications en même temps, puis chaque modification lorsqu’elle est écrite.

C’est l’un des avantages de CouchDB! :) Je ne dis pas qu'il s'agit uniquement d'une fonctionnalité de CouchDB, mais il est simplement intelligent de le faire en lecture.

Une chose que vous pouvez faire est de lire avec update = false, qui est une lecture sale et peut ne pas retourner ce que vous attendez. Si vous le faites toujours, vous pouvez programmer un événement "normal". lire un travail cron et mettre à jour votre index avec cela. Je ne pense pas que cela ait un sens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top