Datenbank Kopie - verhindern



  • Hallo Leute,

    und zwar geht es darum - Ich habe eine große Datenbank (10-20 GB). Die Will ich leuten zur Verfügung stellen (NUR READ!). Aber ich will verhindern, dass die komplette DB kopiert wird.
    Ich denke, ein traffic LIMIT würde das Problem lösen, nur klappt das mit einer Datenbank (zb. Postgres SQL)?

    Oder hat jemand eine andere Idee? Würde mich über eine Antwort freuen 🙂



  • Hi,

    also ich glaube, dass sowas nicht geht. Du kannst bei einigen Datenbank die maximale Anzahl der Verbindungen oder Querys angeben. Vielleicht auch bei der ein oder anderen den Traffic.
    Wie soll denn der Zugriff stattfinden ? Über das Internet bzw. PHP ? Dann kann man(n) es eh nicht speichern. Solltest Du die Datenbank allerdings offen machen, dann hast Du schlechte Karten.

    Gruß SciFi



  • hm, über querys kann ich das vermutlich nicht gescheit handeln?! mit "Select * from db" kann ich mir dann die DB auslesen.
    Die Datenbanken sind offen, man kann direkt drauf zugreifen.



  • Ist da wirklich nichts zu machen? PostgreSQL auch nicht?



  • Bei MySQL gibts nen "MAX_QUERIES_PER_HOUR":
    http://dev.mysql.com/doc/refman/5.1/de/user-resources.html



  • eine idee hätte ich vielleicht.

    aber ganz sicher bin ich mir da nicht.

    da fehlen halt auch ein paar infos, wie die db überhaupt genutzt wird.

    aber ein komplettes auslesen würde ja entweder mit (ich gehe jetzt mal von postgres aus) mit pg_dump oder einer reihe von "select * from <table>" passieren.

    diese "select * from <table>" könnte man durch rules auf limitierte selects umbiegen.

    zu einem pg_dump fällt mir leider nichts ein, aber vielleicht greifen da dann ja auch die rules.

    alles ohne gewähr, ist mir nur gerade so eingefallen.

    jenz



  • jenz schrieb:

    eine idee hätte ich vielleicht.

    aber ganz sicher bin ich mir da nicht.

    da fehlen halt auch ein paar infos, wie die db überhaupt genutzt wird.

    aber ein komplettes auslesen würde ja entweder mit (ich gehe jetzt mal von postgres aus) mit pg_dump oder einer reihe von "select * from <table>" passieren.

    diese "select * from <table>" könnte man durch rules auf limitierte selects umbiegen.

    zu einem pg_dump fällt mir leider nichts ein, aber vielleicht greifen da dann ja auch die rules.

    alles ohne gewähr, ist mir nur gerade so eingefallen.

    jenz

    Hört sich interessant an. Wir funktionieren denn "diese "select * from <table>" könnte man durch rules auf limitierte selects umbiegen. "



  • siehe hier:

    http://www.postgresql.org/docs/8.2/interactive/rules.html

    einfach mal durcharbeiten würde ich sagen.

    idee ist, dass du unlimitierte selects wie
    select * from main_table;

    auf so etwas umänderst:

    select * from main_table limit 20;

    das limit kannst du dann natürlich bestimmen.

    jenz



  • Der SQL Server 2005 hat eine Schema-Struktur die Benutzerabhängig ist, eine Idee wäre den Benutzer die Berechtigungen auf Tabellen zuzugreifen zu nehmen und Views für die einzelnen Schemas(en) aufzustellen. Hier könnte man dann auch die Rückgabemenge für die Views im Vorfeld für bestimmte Benutzer beschränken, so dass, egal mit welchen Select-Befehl er deine Datenbank abfragt, nur eine begenzte Anzahl von Datensätze zurück zugeben.



  • hm, mit views?

    dann würde man doch aber nicht auf jeden datensatz zugreifen können, oder?

    create view limited_view as select * from main_table limit 100;

    so?

    dann geht es nicht so gut oder habe ich das falsch verstanden?

    jenz



  • Wenn man auf jeden Datensatz in irgnedeiner Form zugreifen kann, kann man auch mit etwas Aufwand die Datenbank kopieren. Das ist gar nicht verhinderbar - wie auch?!

    MfG SideWinder



  • ja, das sehe ich auch so, aber man muss es ja nicht unbedingt leicht machen, oder?


Anmelden zum Antworten