Riesen Projekt, es fragt sich welche libs oder framworks

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

Hi,

Folgendes könnte mein folgendes Projekt, werden und da möchte ich vorab schon mal einen ungefähren Plan haben wie ich das implementieren würde.

Aufgabe:

Es muss ein Dokumentmanagementsystem her. Sprich Daten sollten irgendwo vorgehalten werden und über ein Frontend (Webinterface) sollte es möglich sein das gewissen Aspekten zu suchen usw.
Über das Frontend sollte man nicht nur Suchen möglich sein, sondern auch löschen, download und upload von 1 bis x files.
Es handelt sich bei den files vor allem um XML, wobei diese auch nach dem Inhalt gewisser Elemente durchsucht werden sollen. Es muss also eine Art von Indexing passieren. Es wird zwar auch andere files geben, bei diesen reicht aber eigenltich eine suche nach filenamen, änderungsdatum usw. Filemenge ist nicht gerade klein. Wir reden hier von derzeit ca. 600k XML-Files.

Ich dachte erst ich verwende Django, war mir aber nicht sicher ob das, vor allem beim fileupload performant genug sein wird.
Es gibt auch vereinzelnt fertige DBMs, aber die zu customizen wäre denke ich schwieriger als gleich ein eigenes zu schreiben und generell schreibe ich gerne Sachen selbst, weil a) die Wartung einacher ist und b) ich dabei meisten noch was lerne :)

Was würdet ihr mir vorschlagen ?

Vielen Dank im Vorraus !
deets

Die Frage nach dem Web-Framework ist hier nahezu irrelevant. Alle populaeren sind dafuer geeignet. Viel interessanter sind die Fragen, die du nicht stellst bzw. Informationen, die du nicht gibst:

- welche Groesse haben die Dateien
- welche Frequenz haben die Zugriffe, lesend wie schreibend
- wie sehen die Clients aus, auch andere Software, oder nur das Browser-Interface
- was fuer Informationen sollen aus den Daten extrahiert werden, sind das Volltexte bzw. etwas vergelichbares
- was fuer Zugriffsbeschraenkungen auf die Daten gibt es, wie sollen die verwaltet werden
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

gern reich ich dir die relevanten Infos nach:

- welche Groesse haben die Dateien
von 2 KB bis 10 MB ist da alles dabei, wobei die mehrzahl der files unter 1 MB bleiben sollte.

- welche Frequenz haben die Zugriffe, lesend wie schreibend
Wenn files mal im System sind werden sie eigentlich nur mehr im Ausnahmefall gelesen, oder geschrieben. Es kommen aber täglich files hinzu.

- wie sehen die Clients aus, auch andere Software, oder nur das Browser-Interface
Nur Browser. Es sollte aber auch möglich sein auf alle files über das Filesystem zuzugreifen.

- was fuer Informationen sollen aus den Daten extrahiert werden, sind das Volltexte bzw. etwas vergelichbares
Es sind vor allem Volltexte. In den XML files gibt es aber einzelne Elemente für meta_daten, zb Datum, Autor udgl. Diese sollten über eigene Suchfelder, auch kombiniert durchsucht werden können.

- was fuer Zugriffsbeschraenkungen auf die Daten gibt es, wie sollen die verwaltet werden
Sofern die Datei gerade bearbeitet wird soll sie natürlich gesperrt sein, aber User- oder Rollentechnisch gibt es keine Beschränkungen. Verwaltet soll das ganze über eine DB werden, wobei auch über's filesystem beabreitung möglich sein soll.(Ich weis das das sehr sehr problematisch ist, die Anforderung besteht aber leider)

Ich hoffe das beantwortet deine Fragen.
deets

Ok, die ganzen Volltext-Indiziererei kann man zB mit lucene gut abhandeln. Oder man macht etwas mit ner DB machen die VT-Indexe unterstuetzt, wie zB Postgres.

Der Rest alles 08/15, auch Frequenz und Datengroesse sind trivial.

Aber die Dateisystem-Auflage ist schlecht. Sehr sogar. Wie soll denn der Zugriff da aussehen? Netzwerk-shares? Was fuer ein Betriebssystem hast du auf dem Server?
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

Lucene ist ein guter Tipp, Dank ! Gibt ja sogar PyLucene :)
Server steht zwar noch nicht, wird aber ziemlich sicher ein Share auf Win2k8 werden.

Man könnte auf den filesystemzugriff vermutlich auch verzichten. Es muss einfach möglich sein files (allle, oder viele aufeinmal) ab und an, automatisch zu überarbeiten. Z.B überall ein neues Element+Inhalt einfügen. Nachdem die zugehörigen Scripts nicht immer in Python geschrieben sein werden, ist es am einfachsten man lässt sie auf das filesystem los. Da gibt es sicher Lösungen und ich bin für jeden Tipp dankbar, aber ich bin da vlt. einfach noch zu unerfahren und diese Lösungen schon zu kennen, oder sie zu implementieren.

/EDIT: Man könnte natürlich eine API zum holen und wieder hochladen der files bereitstellen und dazwischen kann dann eh jeder machen was er will. Ist das die einfachste Lösung ?
deets

Ein paar Tipps:

- wenn es DMS gibt, die koennen, was du willst -dann wuerde ich dir den Erwerb eines solchen Systems anraten.
- erst recht, wenn es ein Windows-server ist. Unter Linux gibt es FUSE, damit kann man eine FS-Abstraktion sogar in Python programmieren. Unter Windows waere mir nichts vergleichbares bekannt.
- du scheinst dir noch gar keine Gedanken ueber konkurrierende Zugriffe auf dieselben Files gemacht zu haben. Was ist da die Policy? Winner takes it all, oder optimistic locking?
- dein System stellt doch schon eine API zum hoch- und runterladen bereit. Oder ist dein Browser magisch? Oder meinst du *alles* auf einmal? Das potentiert alle Probleme mit konkurierrenden Zugriffen, und bringt deinen Server an seine Grenzen, denn alles auf einmal in eine Datei zu pumpen und wieder zurueck ist auesserst arbeitsintensiv.
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

- wenn es DMS gibt, die koennen, was du willst -dann wuerde ich dir den Erwerb eines solchen Systems anraten.

is klar, ich finde aber keines. Ich würd das aber auch aus eigenem Interesse gerne schreiben, weil ich da wirklich viel lernen kann.

- du scheinst dir noch gar keine Gedanken ueber konkurrierende Zugriffe auf dieselben Files gemacht zu haben. Was ist da
die Policy? Winner takes it all, oder optimistic locking?

Ich hab mir schon Gedanken gemacht, ich würde sie tatsächlich einfach locken für Bearbeitung ohne es aus dem System zu holen (Eben bei so automatischen Sachen). Wernn 2 leute ein file downloaden, etwas editieren und dann wieder hochladen wird's halt überschrieben. Das sollte keine Problem darstellen.

- dein System stellt doch schon eine API zum hoch- und runterladen bereit. Oder ist dein Browser magisch? Oder meinst du *alles* auf einmal? Das potentiert alle Probleme mit konkurierrenden Zugriffen, und bringt deinen Server an seine Grenzen, denn alles auf einmal in eine Datei zu pumpen und wieder zurueck ist auesserst arbeitsintensiv.

Natürlich gäbe den Code schon. Ich meinte sowas wie einen Webservice (SOAP, REST) auf den man dann mit allen möglichen Sprachen zugreifen kann.
BlackJack

Käme eventuell auch eine Versionsverwaltung in Betracht? Zumindest als Teil des Systems?
patmaster
User
Beiträge: 106
Registriert: Donnerstag 3. Februar 2011, 17:21

BlackJack hat geschrieben:Käme eventuell auch eine Versionsverwaltung in Betracht? Zumindest als Teil des Systems?
Wenn du dann einen Tipp hättest höre ich mir den gerne an, grundsätzlich ist Versionierung allerdings nicht angedacht.
Antworten