2017-09-21 3 views
0

J'ai des données d'application qui seront stockées dans SQL Server. Ces données seront synchronisées avec le navigateur de l'utilisateur via une API REST et conservées dans une base de données IndexedDB pour permettre à l'utilisateur d'effectuer des opérations CRUD de base et de les repousser. Les entités ne sont pas particulièrement complexes ou grandes. La plupart des utilisateurs auront dans la région d'un couple de Mo de données. Compte tenu du contexte, les avantages de stocker ce côté client dans un modèle non relationnel, l'évolutivité et la performance, semblent ne pas s'appliquer. Serais-je plus utile de stocker ces données de manière relationnelle avec des clés étrangères joignant des entités dans des magasins d'objets IndexedDB?Modélisation d'une base de données IndexedDB dans une application Web hors ligne avec des données relationnelles côté serveur

La sérialisation des données relationnelles dans JSON côté serveur semble assez triviale pour une structure relationnelle ou une structure de type document utilisant un ORM.

Répondre

0

Stocker les données de manière dénormalisée dans indexedDB. Par là, je veux dire regarder quelles opérations se produisent le plus dans votre application de navigateur. Généralement, il s'agit de lectures qui analysent plusieurs objets dans un magasin d'objets. Renormaliser les données dans le formulaire qui rend l'opération de lecture rapide. Certainement pas utiliser la première forme normale ou quoi que ce soit (désolé, il y a des années depuis Boyce-Codd) où vous devrez faire des jointures manuelles avec indexedDB. Ce serait lent et n'embrasserait pas l'idéologie No-SQL.

1

Vous pouvez utiliser un wrapper IndexedDB JsStore qui résout probablement les difficultés de modélisation d'une base de données IndexedDB avec des données côté serveur relationnel.

Vous pouvez créer des tables dans l'indexedDB du schéma similaire que vous avez du côté serveur avec l'aide de JsStore et vous avez juste besoin d'effectuer des opérations CRUD basiques sur vos tables IndexedDB à l'aide des API fournies par le JsStore. être facile de synchroniser les données avec le côté serveur car vous avez un schéma commun des deux côtés.

Pour plus de détails vous pouvez passer par le tutoriel officiel: JsStore Tutorial

Espérons que cela peut aider.