hans erik Geplaatst: 14 oktober 2014 Delen Geplaatst: 14 oktober 2014 De 2 presentaties van Jon Tatcher van FMI op de FMSummit waren gewijd aan server performance resp. security en dat zette me aan het denken. Ik gebruik een security model dat van de FileMaker Privilegeset gebruik maakt voor beveiliging van data op tabelniveau en ook op recordniveau. Dat werkt ongeveer als volgt. - Gebruiker logt in en zijn FMP account wordt in een global veld opgeslagen. - Bij elke record wordt automatisch opgeslagen welke account de record heeft aangemaakt. - In de privilegeset is voor een tabel aangegeven wanneer een record zichtbaar is (view): bijvoorbeeld, login_account = creation_account. NB Dit kan uitgebreid worden met een extra veld met accounts waarin de eigenaar kan aangeven wie het record nog meer mogen zien, maar in principe kijkt een account alleen naar zijn eigen records. Maar nu vraag ik mij af: resulteert die aanpak niet in veel extra netwerkverkeer tussen de server en de client? En als dat een probleem is, hoe zou je het anders kunnen oplossen? Een global field (in dit geval: mijn login account) bestaat immers altijd op de client, en elke keer dat een record geopend wordt, moet de ‘to view or not to view-evaluatie’ uitgevoerd worden. Dit gebeurt dus kennelijk op de client, niet op de server. Of niet? Ook zou dit betekenen dat het afgrendelen van delen van je tabel niet altijd resulteert in een lagere netwerkload. Voorbeeld A - je hebt een tabel met de gegevens van 10.000 personen. - je mag alleen de gegevens inzien van personen waarvan het salaris ontbreekt ( = isempty (person::salary)). - er wonen 1000 personen in Amsterdam waarvan 300 zonder ingevuld salaris. - als je de gegevens van de personen in Amsterdam opvraagt, gaan er maar 300 records over het netwerk omdat de berekening 'isempty (person::salary)' op de server uitgevoerd wordt, denk ik zo. Voorbeeld B - zelfde tabel als voorbeeld A maar nu mag ik alleen maar mijn eigen records zien ( g_account = person::account_creation) - stel er zijn 10 personen in Amsterdam waarvan ik 'eigenaar' ben. - nu gaan er 1000 records over het netwerk, maar worden er slechts 10 van getoond omdat de client besluit dat de rest niet aan de criteria voldoet? OF stuurt FileMaker eerst de waarde g_account naar de server en voert daar de evaluatie uit? Quote Link naar reactie
Infomatics Geplaatst: 14 oktober 2014 Delen Geplaatst: 14 oktober 2014 Hoi Hans Erik, Volgens mij wordt de check op de client gedaan, dus zullen alle records opgehaald worden. Het is in zo'n geval handiger om met een relatie/ zoek opdracht ook de inlogID mee te geven zodat je alleen relevante records terug krijgt. Groet, Ruben Quote Link naar reactie
hans erik Geplaatst: 14 oktober 2014 Auteur Delen Geplaatst: 14 oktober 2014 Ja, zoiets dacht ik ook al. Maar in voorbeeld A (waar op een 'opgeslagen' criterium gecheckt wordt) vindt de controle toch op de server plaats? Quote Link naar reactie
Aanbevolen berichten
Doe mee aan dit gesprek
Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.