2009-12-25 4 views
0

Python -> SQLite -> ASP.NET C#Dans la base de données de mémoire avec une capacité de prise

Je cherche une base de données dans l'application de la mémoire qui ne dispose pas d'écrire les données qu'il reçoit sur le disque. Fondamentalement, je vais avoir un serveur Python qui reçoit des données UDP de jeu et traduit les données et les stocke dans le moteur de base de données de la mémoire. Je veux rester loin de l'écriture sur disque car cela prend trop de temps. Les données ne sont pas importantes, si quelque chose ne va pas, il se vide et se remplit avec la prochaine vague de données envoyées par les joueurs.

Ensuite, un autre serveur ASP.NET doit pouvoir se connecter à cette base de données en mémoire via TCP/IP à intervalles réguliers, par exemple toutes les secondes ou 10 secondes. Il doit extraire ces données, qui seront à leur tour mises à jour sur un site Web affichant des données de jeu «en direct».

Je regarde SQlite, et je me demande, est-ce le bon outil pour le travail, quelqu'un a des suggestions?

Merci !!!

+1

"Je ne veux pas écrire sur le disque car cela prend trop de temps" ressemble à une optimisation prématurée. Si vous n'avez pas les numéros pour le sauvegarder, continuez avec le chemin le plus simple. – Schwern

Répondre

1

Cela ressemble à une optimisation prématurée (s'excuse si vous avez déjà fait le profilage). Ce que je suggérerais, c'est d'aller de l'avant et d'écrire le système de la manière la plus simple et la plus propre, mais de mettre un peu d'abstraction autour des bits de la base de données afin qu'ils puissent facilement être échangés. Puis profilez-le et trouvez votre goulot d'étranglement.

S'il s'avère que c'est la base de données, optimisez la base de données de la manière habituelle (index, optimisations de requête, etc ...). Si c'est encore trop lent, la plupart des bases de données supportent un format de table en mémoire. Ou vous pouvez monter un disque RAM et monter des tables individuelles ou toute la base de données dessus.

0

L'application de SQlite dépend de la complexité de vos données.

Si vous devez effectuer des requêtes complexes sur des données relationnelles, cela peut être une option viable. Si vos données sont plates (c'est-à-dire non relationnelles) et traitées dans leur ensemble, certaines structures de données internes à Python peuvent être applicables.

1

Totalement pas mon domaine, mais je pense que Redis est le long de ces lignes.

0

SQLite ne sais que j'autorise pas « connexions » à distance dans la mesure, il ne supporte que d'être invoquée comme une bibliothèque en cours. Cependant, vous pouvez essayer d'utiliser MySQL qui, bien que plus lourd, prend en charge les connexions à distance et possède des tables en mémoire. Voir http://dev.mysql.com/doc/refman/5.5/en/memory-storage-engine.html