Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]706[/thread]

searchid - kein plan



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Froschpopo
 2006-04-02 17:56
#7295 #7295
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Wie ist das eigentlich mit sehr dynamischen Datenbanken?
beispiel:
Eine Userdatenbank die nach Datum der Anmeldung sortiert wird.
Die Ausgabe erfolgt seitenweise.

Das problem: Wenn ich nun längere zeit auf Seite 2 verweile und sich in der Zwischenzeit jemand neues anmeldet, verschiebt sich der letzte Eintrag auf Seite 1, auf Seite 2.

Ich vermute mal, dass dies der Grund ist, dass viele Foren wie auch dieses sog. "searchid's" anwenden.
Wie funktioniert das genau?
Welche Methode steckt denn dahinter?
jan
 2006-04-03 01:29
#7296 #7296
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
die suche ausführen, ergebnis irgendwo speichern, dem user eine id mitgebeben, die auf das gespeicherte ergebnis verweist und beim durchklicken darauf zurückgreifen. erleichtert auch der db die arbeit.
esskar
 2006-04-03 10:12
#7297 #7297
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
nachteil:
du musst das pageing selbst tun und kannst auf solche Sachen wie LIMIT nicht zurück greifen
renee
 2006-04-03 10:27
#7298 #7298
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bei jans Methode kann man durchaus auch mit LIMIT arbeiten. Es besteht ja weiterhin die Möglichkeit, die Abfrage auf die Ergebnismenge zu machen und die gleiche Sortierung nehmen.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2006-04-03 10:30
#7299 #7299
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
aber nur dann, wenn das Resultat der ersten Suche als temporäre Tabelle in der Datenbank bleibt, oder?
renee
 2006-04-03 10:32
#7300 #7300
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, so hatte ich jans Vorschlag auch interpretiert ("die suche ausführen, ergebnis irgendwo speichern").
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2006-04-03 12:17
#7301 #7301
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
das "irgendwo" sah ich als nicht klar definiert! :)
jan
 2006-04-03 14:04
#7302 #7302
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
"irgendwo" ist immer genau da wo der leser es für passend hält :)

aber ob nun in der db oder in einer fixed-length-file. das paging macht man ja im grunde sowieso selber, und ob man da nun limit nutzen kann oder nicht, das macht, imho, den kohl nicht fett.
Froschpopo
 2006-04-07 05:24
#7303 #7303
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
warum erleichtert das der datenbank die arbeit? wenn ich limit 30000,30010 mache, dann dürfe das doch auch relativ sparsam sein, oder etwa nicht? Ich meine, irgendwas muss mysql ja haben, wenn es so toll sein soll.
Mein Problem ist eigentlich nur, dass die Datenbank, die nach einem bestimmten Datum sortiert wird, sehr beweglich ist.
Es kann also sein, dass sich ein Datum wärend einer Abfrage ändert und das die Suchergebnisse beeinflusst indem der aktuelle Beitrag ständig nach hinten rutscht.

Hier mal ein Beispiel:
Code: (dl )
SELECT * FROM users ORDER BY last_login ASC LIMIT $begin, $end

nehmen wir mal an, die Anweisung ist "LIMIT 20,30".
Stell dir vor, jetzt kommt ein aktueller last_login dazu, dann wäre die ganzen Suchergebnisse plötzlich durcheinander, weil der zuletzt geänderte Datensatz mit dem last_login ja unterhalb von LIMIT 20... liegt, nämlich direkt auf 1 !

Hier eine Lösung: Mal angenommen mysql besitzt soetwas wie eine history. Dann könnte man die datenbank ja immer zu einem bereits vergangenen Zustand rückversetzen und dieser enthielte dann auch die Abfragen, der Reihe nach.
Das wäre eine Lösung. Aber wie machen?
pq
 2006-04-07 12:22
#7304 #7304
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
mysql besitzt eine "history" - transaktionsmanagement. solange du in einer
transaktion bist, siehst du keine veränderung (kommt natürlich auf den
level der transaktion an).
kennst du eine webseite, bei der sowas implementiert ist? also bei neu
hinzugekommenen datensätzen das bisherige ergebnis nicht verschieben?
mir würde jetzt aus dem stehgreif keine einfallen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2006-04-02 17:56.