2009-05-21 8 views
0

J'ai écrit une application PHP qui nécessite le stockage de millions d'entiers compris entre 0 et 10 000 000 inclus. Chaque nombre est incrémenté de un très fréquemment (en moyenne 100 valeurs sont mises à jour toutes les secondes) et lu très fréquemment (20 000 lectures par seconde). Les chiffres sont réinitialisés à 0 tous les soirs, hebdomadaires, mensuels ou annuels.Base de données/stockage de données pour un volume élevé de transactions simples

J'ai un assez bon contrôle sur MySQL mais il me semble que c'est un peu exagéré et pas très efficace dans le processus.

Quelqu'un a-t-il déjà dû faire face à ce problème et/ou pourrait-il faire la lumière sur un système de stockage de données approprié?

Répondre

0

En fonction de la quantité de mémoire dont vous disposez et de la durée de conservation, vous pouvez utiliser le cache APC ou memcache. memcache a une belle opération d'incrémentation, donc c'est fou de le faire.

BTW, vous avez dit que vous avez besoin de lectures 20K. Et vous le faites en PHP? sur un serveur ou sur un cluster? On dirait que vous avez besoin de conseils architecturaux ..... :)

S'il s'agit d'une application Web, vous allez utiliser un cluster. Et si ce n'est pas une application web, je vous suggérerais de le refaire dans quelque chose qui n'est pas PHP. Java, C++ et C# me viennent à l'esprit.

+0

La memcache de saint wow semble parfaite. Merci l'homme, je vais essayer de porter sur! Oui, c'est une application web. C'est sur un VPS (!) Pour tester. Après que memcache est en train de botter les fesses, je veux abandonner Apache pour quelque chose d'un peu plus mince. Ensuite, je diviserai les demandes de données entre les adresses IP et j'amènerai de nouveaux serveurs en cas de besoin. Je pense. :-) –

+0

Juste repéré que vous êtes basé à Londres - étiez-vous à hackday ou BCL6? –

+0

Non, je n'étais pas au hackday ou au BCL6. Peut-être envisager d'utiliser Amazon EC2, de sorte que vous pouvez faire une image de votre configuration de base et puis juste l'élever, exécuter un script (peut-être tirer de svn etc) et vous avez la nouvelle machine :) facile :) –

Questions connexes