2009-08-30 8 views
2

Je développe une application qui doit stocker de grandes quantités de données.SQL Server CE ou Access pour une base de données portable avec C#?

Je ne peux pas utiliser l'édition SQL Server Express car elle nécessite une installation séparée et nos clients cibles nous ont déjà soumis des réclamations concernant notre version précédente avec SQL Server Express. Maintenant, mes choix sont entre SQL Server compact et Access.

Nous stockons d'énormes quantités de données de reporting (3 millions par semaine). Quelle base de données puis-je utiliser?

L'application est portable et une application basée sur le produit.

Notre société nous demande de fournir l'application de manière à ce qu'elle puisse être téléchargée et utilisée par toute personne de notre site Web. S'il vous plaît aider.

Merci.

Éditer: 40 000 enregistrements dans une heure est le taux approximatif auquel il est stocké. Les données stockées sont juste normales varchar, datetime, nvarchar, etc. Aucune image et aucun truc binaire ou spécial.

Répondre

1

Qu'est-ce que "3 millions de données"/3 millions de grandes images? 3 millions d'octets? Il pourrait y avoir une grande différence là-bas. Quoi qu'il en soit, je choisirais probablement SQL CE sur Access si la taille réelle des données ne dépasse pas ce que SQL CE supporte (4 Go). J'ai utilisé SQL CE pour des applications qui collectent quelques centaines de milliers d'enregistrements en une semaine sans problème. La base de données est un fichier unique, portable et présente l'énorme avantage que SQL Server complet peut simplement y attacher et l'utiliser comme source de données, même dans des scénarios de réplication.

+0

non ... juste 3 millions de lignes (pas d'images ou de données) quelque chose comme "sno, nom, heure reçue, message, nom d'utilisateur". – Josh

+0

40 000 enregistrements dans une heure est le taux approximatif auquel il est stocké. – Josh

+0

semble que vous avez utilisé sql ce pour quelques centaines de milliers de disques .... J'espère que cela fonctionne bien pour moi. Mais maintenant, j'ai besoin de porter la base de données existante du serveur sql à sql ce. :(Je pense que c'est une tâche difficile avec les procédures stockées en place – Josh

0

Si vous êtes étroitement couplé à .Net: sql server compact serait un meilleur choix.

Sinon, pensez à utiliser: sqlite

+0

J'ai considéré que ... mais ce blog dit que sqlce est plus facile ... http: //ayende.com/Blog/archive/2008/01/22/SQLite-vs.-SQL-CE.aspx – Josh

+0

SQL Server Compact et SQL Server CE ne sont-ils pas la même chose? http://en.wikipedia.org/wiki/SQL_Server_Compact suggère qu'ils sont. –

+0

oui c'est ... :) – Josh

1

40 000 enregistrements par heure sont de 10 enregistrements par seconde. Je suggère de créer les différents tableaux et index requis dans les deux et tester d'abord. Et laissez le test tourner pendant 8 heures et voyez ce qu'il se passe.

Il est tout à fait possible que les premiers enregistrements x puissent s'insérer raisonnablement bien, mais ils deviennent de plus en plus lents. x étant un nombre compris entre 10K et 1M. Plus lent et plus lent est assez subjective et dépend de l'application. Dans Access, je suggère de faire un compact sur une base régulière, c'est-à-dire après 100K enregistrements peut-être, pour nettoyer les index. Toutefois, si l'application veut insérer des enregistrements pendant 8 heures sans interruption, il est clair que cela ne fonctionnera pas bien pour vous. Ou vous pouvez essayer de supprimer les index, faire les insertions d'enregistrement et recréer les index. Toutefois, si les utilisateurs veulent interroger les données pendant que les enregistrements sont insérés, cela ne fonctionnera pas non plus.

L'accès peut également fonctionner beaucoup plus rapidement si la base de données n'est pas partagée. Encore une fois, cela peut ne pas être pratique. Enfin, si vous n'obtenez toujours pas de performances décentes, ou même si vous le faites, pensez à installer un lecteur de disque dur à l'état solide et placez votre fichier de base de données dessus. Un disque SSD de 32 Go pour quelques centaines de dollars achète beaucoup de temps de développement avec des choses.

Questions connexes