Άυτό δεν το κατάλαβα. Security οριζόντια εννοείς μάλλον το row-level security. Πώς δένει αυτό με το string από IDs? Και τί εννοείς ο "default" τρόπος?
Για την ιστορία, η Oracle υποστηρίζει row-level security αλλά στην ουσία κάνει join τα RowIDs κάθε πίνακα με ένα "function" το οποίο ελέγχει τα permissions. Αν αυτά είναι απλά UserID, RoleID θα μπορούσε άνετα να κάνει join με ένα πίνακα που θα περιέχει RowID, AllowedUserID, AllowedRowID. Ο πίνακας αυτός μπορεί να περιέχει πολλές εγγραφές, αλλά δεν μας πειράζει. Μια DB τα πάει πολύ καλά με πολλές εγγραφές φτάνει να έχουν indexes.
Παρόμοια λύση είχα εφαρμόσει και σε αυτή την περίπτωση, μόνο που εκεί έπαιζαν και ιεραρχικά permissions (ιεραρχικά ανά business unit, ρόλο), τα οποία συμμετείχαν σε όλα τα queries που επιστρέφανε πληροφορίες στο χρήστη (δηλαδή σε grid, show και edit φόρμες).
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos