2016-07-05 22 views
0

Von einem SQL-Hintergrund kommen. Wenn ich den Zugriff auf Daten basierend auf bestimmten Attributen eines Benutzers beschränken möchte, kann ich eine Ansicht erstellen und die Ansicht als Filter verwenden, um zu beschränken, welche Daten ein Benutzer basierend auf den Kriterien in der Ansicht sieht. Dieser Ansatz beruht auf Beziehungen und bisher hat es für mich funktioniert. Betrachtet man NoSQL und die Verschiebung in der Strategie und im Konzept, bin ich verwirrt, wie man dies in die Natur von NoSql einführt. Was ist der NoSql-Ansatz für ein Problem wie dieses? Wenn Benutzer nur aufgrund ihres Benutzertyps in bestimmte Zeilen eingeweiht sind? Angenommen, ein Administrator kann alle Datensätze für eine bestimmte Gruppe anzeigen, und ein generischer Benutzer kann nur seine Datensätze und bestimmte Elemente auf Gruppenebene, Gruppenfotos, Gruppennachrichten usw. anzeigen, die innerhalb einer Gruppe öffentlich sind. Ich versuche wirklich, meinen Kopf zu wickeln, nicht in Bezug auf die SQL-Ansatz für dieses Problem zu denken, aber ich bin neu in NoSQL, so dass es eine Herausforderung war.NoSQL-Strategien für die Autorisierung von Datenzeilen

Antwort

0

NoSQL-Datenbanken unterscheiden sich in vielerlei Hinsicht konzeptionell von relationalen Datenbanken. Autorisierung und Sicherheit stehen im Allgemeinen nicht im Vordergrund. Aber die meisten von ihnen haben sich in diesem Bereich entwickelt, und sie haben eine feinkörnige Autorisierung. Grundsätzlich kommt es auf eine bestimmte Datenbank an. Beispiel: Cassandra verfügt über Berechtigungen auf Spaltenebene im Plan (https://issues.apache.org/jira/browse/CASSANDRA-12859), HBase verfügt über Berechtigungen auf Zellenebene (https://www.cloudera.com/documentation/enterprise/5-8-x/topics/cdh_sg_hbase_authorization.html). Auf der anderen Seite ist MongoDB generell schemal und hat ein anderes (komplexeres) dokumentenorientiertes Datenmodell, was es schwierig macht, Low-Level-Zugriffskontrolle zu implementieren. Darüber hinaus hat MongoDB Ansichten.

Wenn DBMS, das Sie verwenden, keine integrierte Autorisierung auf der erwarteten Ebene hat, muss es in einer Anwendung implementiert werden, die mit db interagiert (wenn es mehr als eine Anwendung gibt, können die Dinge schwierig werden) einige Verwendungsregeln müssen festgelegt werden). Die Verwendung von denormalisierten Modellen ist eine übliche Sache, so dass verschiedene Rollen/Gruppen mit verschiedenen Tabellen/Sammlungen interagieren können, die Daten enthalten, die nur diese Rolle/Gruppe sehen kann (im Grunde handelt es sich um eine Simulation von RDBMS-Sichten). Diese denormalisierte Herangehensweise erfordert normalerweise mehr Speicherplatz und erfordert das Synchronisieren von Kopien. Wenn DBMS die Projektion unterstützt, kann eine Teilmenge von Spalten/Feldern für verschiedene Rollen/Gruppen dargestellt werden (auf diese Weise wird zumindest ein Teil der Verarbeitung auf der Seite der Datenbank ausgeführt).

Ich hoffe, dass dies hilft, obwohl es eine späte Antwort ist.

Verwandte Themen