Vue d'ensemble des vues

Cet article présente et décrit les vues Spanner.

Présentation

Une vue est une table virtuelle définie par une requête SQL. Lorsque vous créez une vue, vous spécifiez la requête SQL qu'elle représente. Une fois que vous avez créé une vue, vous pouvez exécuter des requêtes qui font référence à cette vue comme s'il s'agissait d'une table.

Lorsqu'une requête qui fait référence à une vue est exécutée, Spanner crée la table virtuelle en exécutant la requête définie dans la vue, et cette VM est utilisé par la requête de provenance.

Parce que la requête définissant une vue est exécutée chaque fois qu'une requête faisant référence à la vue est exécutée, les vues sont parfois appelées vues logiques ou des vues dynamiques pour les distinguer des vues matérialisées SQL, qui stockent les résultats de la requête définissant la vue en tant que table réelle de stockage de données.

Dans Spanner, vous pouvez créer une vue correspondant aux droits du demandeur vue ou la vue des droits d'un définition. Ce sont les deux types de modèles de sécurité en contrôlant l'accès à une vue pour les utilisateurs.

Vues des droits du demandeurVues des droits du définition
Description Si vous créez une vue avec les droits du demandeur, un rôle de base de données doit droits sur la vue et tous les objets de schéma qu'elle pour interroger la vue. Pour en savoir plus, consultez Vues des droits du demandeur. Si vous créez une vue avec des droits de définition, un rôle de base de données doit des droits sur la vue (et uniquement sur celle-ci) pour l'interroger. Utilisez un contrôle ultraprécis des accès parallèlement à la vue des droits du définition. l'affichage des droits de l'utilisateur n'ajoute aucun contrôle des accès supplémentaire. Pour Pour en savoir plus, consultez la section Vues des droits du définition.
Autorisations requises pour créer la vue Pour créer, accorder et révoquer à l'un ou l'autre de ces types de vues, vous devez disposer Autorisation spanner.database.updateDdl.
Droits requis pour interroger la vue Un rôle de base de données doit disposer de droits sur la vue et tous ses droits sous-jacents des objets schema pour interroger la vue. Un rôle de base de données a besoin de droits sur la vue (et uniquement sur celle-ci) pour interroger la vue.

Avantages des vues

Les vues présentent plusieurs avantages par rapport à l'inclusion des requêtes qu'elles définissent dans le logique d'application.

  • Les vues peuvent fournir une modélisation logique des données aux applications.

    Parfois, les choix qui ont du sens pour la modélisation physique des données sur Spanner ne sont pas la meilleure abstraction pour les applications qui lisent ces données. Une vue peut présenter un schéma de table alternatif qui est une abstraction plus appropriée pour les applications.

  • Les vues centralisent les définitions de requêtes et simplifient la maintenance.

    En créant des vues pour des requêtes complexes ou largement utilisées, vous pouvez factoriser le texte des requêtes à partir d'applications et le centraliser. Cela facilite considérablement le maintien de la mise à jour du texte des requêtes dans les applications et permet la révision et le réglage des requêtes sans que le code d'application soit modifié.

  • Les vues garantissent la stabilité des modifications de schéma.

    Comme la requête qui définit une vue est stockée dans le schéma de base de données, dans la logique d'application, Spanner garantit modifications du schéma des objets (tables, colonnes, etc.) auxquels la requête fait référence n'invalide pas la requête.

Cas d'utilisation courants

Utilisez des vues lorsque votre base de données Spanner inclut des des données qui ne devraient pas être exposées à tous les utilisateurs de la base de données ou si vous voulez encapsuler vos données.

Si votre vue n'a pas besoin de fonctionnalités de sécurité supplémentaires et que tous les demandeurs de la vue ont accès à tous les objets de schéma auxquels elle fait référence, créent les droits d'un demandeur.

Si vous souhaitez créer une vue dans laquelle tous les demandeurs n'ont pas accès à tous les schémas aux objets auxquels la vue fait référence, créent la vue des droits d'un définition. Définir les vues de droits sont mieux protégées et sont soumises à davantage de restrictions, l'administrateur de base de données peut accorder à moins d'utilisateurs des droits sur les tables colonnes référencées dans la vue. Les vues des droits du définition sont utiles lorsqu'un utilisateur a besoin d'un moyen d'accéder de façon sécurisée à un sous-ensemble pertinent d'une instance Spanner base de données. Par exemple, vous pouvez créer l'affichage des droits d'un définissant les données suivantes:

  • Données de compte personnel (par exemple, le client de l'application).
  • Données spécifiques au rôle (par exemple, le personnel des RH ou les vendeurs).
  • Données spécifiques à la zone géographique.

Vues des droits du demandeur

Si une vue dispose des droits du demandeur, cela signifie que lorsqu'un utilisateur (le demandeur) exécute une requête sur la vue, Spanner vérifie les droits de l'utilisateur sur la vue et sur tous les objets de schéma auxquels elle fait référence. L'utilisateur Vous devez disposer de droits sur tous les objets de schéma pour interroger la vue.

Vues des droits du définition

L'affichage des droits d'un définissant ajoute des fonctionnalités de sécurité supplémentaires à l'affichage. Il fournit des droits différents sur la vue et sur les objets de schéma sous-jacents. Comme pour les vues des droits du demandeur, les utilisateurs doivent disposer d'autorisations au niveau de la base de données pour les droits de création des vues. La principale différence est que lorsqu'un rôle de base de données interroge la vue des droits d'un définition, Spanner vérifie que le rôle a accès à la vue elle-même (et uniquement à la vue). Par conséquent, même si l'utilisateur qui interroge la vue n'a pas accès à toutes les schema, ils peuvent accéder à la vue et voir son contenu. Droits du définissez Les vues permettent aux utilisateurs d'accéder à des données à jour, dans la limite des lignes définies dans la vue.

Les autorisations IAM (Identity and Access Management) Spanner sont accordées au niveau de la base de données. Utiliser un contrôle des accès précis parallèlement à la vue des droits du définition, sinon celle-ci n'ajoute pas tout contrôle des accès supplémentaire. En effet, si l'utilisateur dispose d'autorisations de lecture sur la base de données, ils disposent d'autorisations de lecture sur tous les objets de schéma base de données. Après avoir configuré contrôle des accès précis sur votre base de données, le contrôle des accès précis des utilisateurs disposant du droit SELECT sur la vue et les utilisateurs disposant d'autorisations au niveau de la base de données peuvent interroger la vue. La la différence réside dans le fait que l'utilisateur du contrôle des accès ultraprécis n'a pas besoin de droits sur les objets sous-jacents.

Limites des vues

Les vues comportent des limites par rapport aux tables réelles, ce qui les rend inappropriées pour certains cas d'utilisation.

  • Les vues sont en lecture seule. Elles ne peuvent pas être utilisées pour ajouter, mettre à jour ou supprimer des données.

    Vous ne pouvez pas utiliser de vues dans les instructions LMD (INSERT, UPDATE, DELETE).

  • La requête qui définit une vue ne peut pas utiliser de paramètres de requête.

  • Les vues ne peuvent pas être indexées.

  • Les références aux vues ne peuvent pas utiliser d'optimisations de table.

    Cependant, la requête qui définit une vue peut inclure des optimisations de table sur les tables auxquelles elle fait référence.

  • Les vues ne sont pas compatibles avec le Lire API.

  • Les vues des droits du définition ne sont pas compatibles avec Spanner. Data Boost.

    L'exécution d'une requête contenant la vue des droits d'un définition dans Data Boost entraîne les résultats suivants : une erreur.

  • Le mode de requête recommandé pour l'accès à la vue des droits d'un définition est le mode NORMAL.

    Utilisateurs n'ayant pas accès aux objets de schéma sous-jacents d'un l'affichage des droits reçoit une erreur lors de l'interrogation dans un mode de requête autre que normal.

  • Un utilisateur peut créer une requête soigneusement élaborée Spanner pour générer une erreur qui affiche ou révèle l'existence qui ne sont pas disponibles dans la vue des droits du définition.

    Par exemple, supposons que la vue "QualifiedStudentScores" soit la suivante, renvoie les scores des étudiants qui remplissent les conditions pour un cours. Les critères pour se base sur le niveau et la note de l'étudiant à l'examen. Si le si le niveau de l'élève est inférieur ou égal à six, la note est importante, et l'élève vous devez obtenir au moins 50 points à l'examen pour être éligible. Sinon, pour les niveaux supérieur ou égal à six, l'élève est éligible par défaut.

      CREATE VIEW QualifiedStudentScores
      SQL SECURITY DEFINER AS
      SELECT
        s.Name,
        s.Level,
        sc.Score
      FROM Students AS s
      JOIN Scores AS sc ON sc.StudentId = s.StudentId
      WHERE
      (CASE
        WHEN (s.Level < 6) OR (s.Level >= 6 AND sc.Score >= 50)
          THEN 'QUALIFIED';
        ELSE 'FAILED';
      END) = 'QUALIFIED';
    

    Un utilisateur peut exécuter une requête sous la forme SELECT * FROM QualifiedStudentScores s WHERE s.Level = 7 AND 1/(s.Score - 20) = 1; Cette requête peut échouer avec une erreur de division par zéro s'il y a un élève dans niveau 7 qui a obtenu un score de 20 points, même si la vue limite les données à 50 points ou plus pour ce niveau.

Performances des requêtes lors de l'utilisation de vues

Une requête qui fait référence à une vue offre des performances comparables à cette requête avec sa référence de vue remplacée par la définition de la vue.

Quotas et limites applicables aux vues

  • L'onglet Quotas et "limites" répertorie les quotas et les limites en particulier pour les vues.

  • L'utilisation d'une vue dans une requête peut affecter sa conformité avec les limites de requêtes, car la définition de la vue fait partie de la requête.

Impact sur les coûts

L'utilisation de vues a un impact très faible sur le coût d'une instance:

  • L'utilisation de vues n'a aucun impact sur les besoins en termes de capacité de calcul d'une instance, par rapport à l'intégration de leur texte de requête défini dans des requêtes qui y font référence.

  • L'utilisation de vues a très peu d'impact sur le stockage de base de données d'une instance, car la table générée par l'exécution de la définition de requête d'une vue n'est pas enregistrée dans le stockage persistant de la base de données.

Étape suivante