Le stockage de ~3,5 to de données et l'insertion d'environ 1K/s 24x7, et aussi de l'interrogation, à un taux qui n'est pas spécifié, il est possible avec SQL Server, mais il y a plus de questions:
- quelles exigences de disponibilité, vous avez pour cela? Une disponibilité de 99,999% ou 95%, est-ce assez?
- quelle fiabilité exigence que vous avez? Ne manquant un insert vous coûter de $1M?
- ce recouvrabilité exigence que vous avez? Si vous perdez un jour de données, importe-t-il?
- quelle cohérence exigence que vous avez? Ne une écriture doivent être garantis pour être visible sur la prochaine lecture?
Si vous avez besoin de toutes ces exigences, je l'ai souligné, la charge que vous proposez va coûter des millions de dollars dans le matériel et les licences sur un système relationnel, tout système, peu importe ce que les gimmicks vous essayez (sharding, partitionnement, etc). Un nosql système, de par leur définition même, de ne pas répondre à toutes ces exigences.
Alors, évidemment, vous avez déjà assoupli certaines de ces exigences. Il y a une belle visual guide de comparaison de la nosql offres basées sur le " pick 2 de 3 le paradigme de au de Guide Visuel pour le NoSQL Systèmes:
![nosql comparisson]()
Après l'OP commentaire de mise à jour
Avec SQL Server, cette e et directe de la mise en œuvre:
- une seule table en cluster (GUID, temps). Oui, va devenir fragmenté, mais est la fragmentation affecte les lectures anticipées et les lectures anticipées ne sont nécessaires que pour importante analyse de la plage. Puisque vous n'requête pour GUID spécifique et de la plage de dates, la fragmentation ne sera pas question beaucoup. Oui, c'est une des clés à l'échelle, de sorte que les pages non-feuille va avoir une mauvaise clé de la densité. Oui, cela conduira à un mauvais facteur de remplissage. Et oui, le fractionnement des pages peut se produire. En dépit de ces problèmes, étant donné les exigences, est encore la meilleure clé cluster choix.
- la partition de la table par temps de sorte que vous pouvez mettre en œuvre efficace de suppression des enregistrements expirés, par le biais d'un coulissante automatique de la fenêtre. Augmenter ce avec un index en ligne reconstruction de partition du mois dernier pour éliminer les pauvres facteur de remplissage et de la fragmentation introduit par le GUID de clustering.
- activer la compression de page. Depuis le cluster groupes clés par le GUID d'abord, tous les enregistrements d'un GUID sera unes à côté des autres, en donnant la compression de page a de bonnes chances pour déployer dictionnaire de compression.
- vous aurez besoin d'un rapide IO chemin d'accès du fichier journal. Vous êtes intéressé à haut débit, pas sur une faible latence pour un journal pour suivre 1K insertions/sec, donc le décapage est un must.
Le partitionnement de la compression de page et chaque nécessitent une Édition Enterprise de SQL Server, ils ne fonctionnent pas sur l'Édition Standard et les deux sont très important pour répondre aux exigences.
Comme une note de côté, si les enregistrements proviennent d'un front-end Web, les serveurs de la ferme, je mettrais Exprimer sur chaque serveur web et au lieu de l'INSÉRER sur le back-end, j'aurais SEND
l'info à l'extrémité arrière, à l'aide d'une connexion locale/transaction sur l'Express co-localisé avec le serveur web. Cela donne un beaucoup beaucoup mieux la disponibilité de l'histoire de la solution.
Donc, c'est comment j'allais le faire en SQL Server. La bonne nouvelle, c'est que les problèmes que vous devrez faire face sont bien compris et que les solutions sont connues. cela ne veut pas forcément dire que c'est mieux que ce que vous pourriez réaliser avec Cassandra, BigTable ou Dynamo. Je vais laisser quelqu'un de plus knowleageable dans les choses non-sql-ish à l'argument de leur cas.
Notez que je n'ai jamais mentionné le modèle de programmation .Net de soutien et de. Honnêtement, je pense qu'ils sont hors de propos dans les déploiements à grande échelle. Ils faire une énorme différence dans le processus de développement, mais une fois déployée, elle n'a pas d'importance à quelle vitesse le développement a été, si l'ORM généraux tue performance :)