2011-08-14 5 views
1

Je travaille pour la société immobilière, nous sommes sur le point de développer une nouvelle version de notre application Windows avec C#.Question sur la conception de la base de données

Voici le résumé de la situation actuelle:

Nous avons 4 millions de dossiers et de plus en plus, nous utilisons SQL Server 2005 pour stocker ces enregistrements dans une table avec 52 colonnes. Presque tous les utilisateurs finaux utilisent au moins 30 à 40 colonnes sur chaque recherche.

Je sais que ce n'est pas la conception standard, mais j'ai essayé beaucoup Scénario, J'ai divisé ces 52 colonnes en d'autres tables et fait la relation entre le thème, mais la performance est encore meilleure en utilisant une table (même sans clé primaire!) J'ai ajouté l'index, mais il n'est pas logique d'ajouter un index à toutes les colonnes.

Nous avons d'autres limitations, le matériel des utilisateurs, beaucoup d'entre eux ont encore Pentium II.

De l'autre côté, nous avons le Google Desktop Search GDS. J'ai testé cette application sur leur ordinateur, la performance est toujours bonne. Quelle est la différence entre le serveur SQL et le moteur GDS?

Est-il possible d'utiliser GDS comme moteur pour stocker mes données? Et quel est le nom de ce genre de stockage?

+0

Seriez-vous capable de donner en quelque sorte un exemple de votre table et certaines requêtes? Je comprends que vous ne pouvez pas vraiment publier votre schéma, mais si nous avions un moyen de voir comment les données actuelles ont été organisées et ensuite recherchées, je parie que vous pourriez obtenir une aide plus spécifique pour obtenir un design qui fonctionne pour vous sans avoir faire une grande table. – shelleybutterfly

Répondre

1

Cela dépend vraiment de la façon dont vous appliquez vos index. En outre, vous pouvez avoir un ensemble de tables que vous utilisez pour votre application et un ensemble que vous utilisez pour la création de rapports. De cette façon, vous pouvez augmenter les performances pour la création de rapports tout en conservant vos données correctes. Ainsi, chaque fois que vous obtenez une mise à jour de votre structure de données relationnelles, vous avez un processus qui prend ces données et les migre vers votre base de données, ce qui est plus rapide pour les requêtes.

+0

Tomas, je n'ai pas compris l'image, vous voulez dire que je dois faire les données en double dans une base de données, un ensemble (donc je dois utiliser des tables pour stocker au lieu d'une table) ? – Mironline

+0

oui, c'est vrai. Ou vous pouvez utiliser des vues dans votre base de données, mais je ne suis pas sûr qu'elles soient plus rapides dans MSSQL. Mais en utilisant deux ensembles de tables (ou deux bases de données) où l'un relationnel s'assurera que les données de votre application ont le bon état et celles qui sont dénormalisées augmenteront les performances pour l'interrogation. –

2

Est-il possible d'utiliser un moteur de type GDS pour stocker mes données? et quel est le nom de ce genre de stockage?

Oui, ceux-ci sont généralement appelés NoSQL, et il y a des dizaines de « bases de données » qui se spécialisent dans le stockage de données non relationnelle. Cela dit, dans le plus grand nombre de choses 4 millions d'enregistrements ne sont même pas beaucoup, c'est presque certainement la conception de votre base de données qui est en faute ici. Il y a très peu de cas où une conception de table unique est la plus rapide, les moteurs tels que SQL Server sont très bons pour travailler avec des données relationnelles. Jetez un oeil à des discussions telles que this one, et peut-être en apprendre un peu plus sur la conception de base de données et l'optimisation avant de prendre des décisions.

0

GDS et SQL ne se ressemblent pas. Toutefois, SQL Server dispose (en tant que composant facultatif) d'une fonctionnalité appelée Full-Text Search, qui peut vous aider à obtenir ce dont vous avez besoin.

En général, je pense que ce qui suit pourrait être une bonne solution:

  • Normaliser votre base de données - si vous ne l'avez pas obtenir de meilleures performances avec un DB, alors vous avez certainement tout à fait normalisée avez pas le bon ensemble de clés primaires et étrangères.
  • Utilisez les FTS sur les champs mentionnés texte qui doivent rechercher
Questions connexes