On Thu, 20 Aug 2015, spin@hackerspace.pl wrote:
Robimy bazę przejściową. Do niej baza panny B wrzuca rekordy. W bazie robimy mapowanie, normalizację, zaciągamy fotę z linka na localhost, ew. procesujemy. Taki rekord czeka na usera który mu musi zrobić translację, sprawdzić, i klepnąć mu taga 'approved'.
Każdy misiek z tagiem 'approved' jest przepychany do bazy docelowej panny A. Jeżeli jest zmiana statusu pozycji na półce tego miśka, a jego status jest approved, to baza przejściowa już z automatu wypycha to info do bazy panny A.
Coś bliżej na temat technologii, której używasz? Zakładam jakiś SQL:
- Tabela M trzyma wszystkie miśki - Dostęp SELECT do tabeli M ma tylko naczelny niedźwiedź - Zdefiniowany jest widok MyDearBear na tabeli M z dodatkowymi warunkami - misiek musi być 'approved' lub należeć do panny.
Rozwiązanie proste i działa na wszystkich prawie bazach: - każdy panna ma pod siebie zdefiniowany widok w swoim schemacie bazy danych (z warunkiem OR owner_id = 13, gdzie 13 to id panny.
Rozwiązanie "eleganckie" - jeden widok dla wszystkich, baza dopasowuje uprawnienia w zależności od użytkownika:
- to są zależne od bazy rozwiązania typu "row security" https://wiki.postgresql.org/wiki/Row-security https://dev.mysql.com/doc/refman/5.0/en/stored-programs-security.html itp.
(też można i należy robić to na widokach)
Można też zdefiniować funkcję w bazie danych, która ogranicza dostęp.
Replikacji unikałbym w takiej sytuacji (o ile nie jest potrzebna do czegoś innego).
~Saper