Sql Server Table en memory implémentée avec Redis

À partir de Sql Server 2014 Microsoft a implémenté In-Memory OLTP que IMO est une fonctionnalité très intéressante! Je ne l'ai jamais essayé mais je m'intéresse à cela car il peut vraiment accélérer mes actions "READ" (je veux dire sélectionner des requêtes).

Mon idée est d'exécuter des actions "WRITE" (insert, mettre à jour, supprimer) directement sur le disque (pas en memory) pour être sûr que datatables sont écrites de manière persistante. Au lieu de cela, les actions "READ" (en particulier les requêtes sur les grandes tables, les counturs sur Application_Startup, ecc) seront effectuées en memory.

Maintenant, j'ai quelques questions: 1) est-ce que la table en memory est synchronisée d'une manière ou d'une autre avec datatables sauvegardées sur le disque?

2) Est-il possible de mettre en œuvre ce que j'ai écrit plus haut ou j'ai mal compris?

3) Parce que la version entreprise de Sql Server 2016 coûte trop cher pour une start-up ou une petite entreprise, est-il possible d'implémenter tout cela en utilisant Redis? Je suis nouveau sur Redis et je ne suis pas sûr qu'il ait une fonction de table "en memory". En effectuant une search sur Google, j'ai découvert qu'il faisait un cache (les questions ne sont pas claires) et qu'il s'agissait d'un magasin de structure de données en memory (paires key-valeur)

Merci d'avance les gars

Pour répondre à votre première et deuxième question:

In-Memory dans SQL Server 2016 peut être créé de deux manières, l'une avec Schema Only – ce qui signifie que datatables sont volatiles et qu'elles restnt uniquement en memory

CREATE TABLE TestInMem ( i int,...<columns> ) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY); 

L'autre façon est Schema and Data – Ici, les deux seront conservés dans le stockage secondaire sur une base périodique et votre opération sera plus rapide, car vous allez directement sur la memory primaire pour accéder aux données.

 CREATE TABLE TestInMem ( i int,...<columns> )WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA); 

https://msdn.microsoft.com/en-us/library/dn133186.aspx

En ce qui concerne la troisième question:

Vous ne pouvez pas imposer directement des requêtes sql dans redis. Redis ne fonctionne pas de cette façon. Au lieu de cela, il a des structures comme set, set de sorting, maps de hachage, vous pouvez les utiliser et essayer d'get des requêtes équivalentes, mais certainement pas la façon facile et ne sera jamais réaliser tout ce que sql offre. Par exemple, les jointures complexes, groupées par, ordonnées par peuvent nécessiter plus de 5 ou 6 opérations avec redis, à condition de les stocker parfaitement et de choisir la manière optimale de les récupérer.