|
|
|
|
Nochmal ein .NET Thema:
Ich habe eine reihe von verschachtelten Abfragen, die ich in einer Art Skript-Datei definieren kann. Diese erzeugen dann einen XML-Baum der erhaltenen Daten. Jetzt habe ich ein Projekt bei dem auf diese Weise sehr viele Abfragen zusammenkommen (ca. 60.000). Auf einem Test-Server, der PostgreSQL verwendet, geht dies in 4 Minuten. Der Informix-Produkiv-Server hingegen braucht dafür 1 Stunde.
Ich habe dafür vorher ein eigenes Programm eingesetzt, welches zuerst die Daten in ein DataSet schreibt, so dass ich die gesuchten Datensätze direkt im Speicher zusammensetzen kann (funktioniert auch gut). Da es sich im Endeffekt auch nur um 4 verschiedene Tabellen handelt, würde ich dies gerne wieder so ähnlich lösen. Allerdings lassen sich solche DataSets nur geringfügig per Datenbankabfrage ansprechen (immer nur eine Tabelle und dann einfache Bedingungen wie Spalte=Wert). Ich möchte aber mein System so allgemein wie möglich halten, so dass nur richtige Datenbankabfragen angegeben werden können.
Daher habe ich mir gedacht, es wäre ja cool, die benötigten Tabellen zuerst in einen kleinen SQL-Server einzulesen und die Abfragen dann auf diesem auszuführen. Ich habe bereits eine kommerzielle Lösung gefunden, die es erlaubt normale SQL-Abfragen auf DataSets auszuführen; aber es ist eben kommerziell.
Rein von den Abfragen her, wäre ich in der Lage eine Tabellen-Struktur selbstständig zu erstellen, daher stellt sich nur die Frage, wie bekomme ich zum Beispiel eine SQL Server Compact Edition Datenbank erstellt, ohne eine Datei dafür zu haben? Ich möchte auch keine Dummy-Datei haben, deren Inhalt ich immer wieder zurücksetze.
Könnte vielleicht etwas sein, dass Garland weiß, wegen seiner Erfahrung mit dem Compact-Framework.
|
|
|
|
|
|
|
|
|
|
|
| Zitat von Ashtray
Hey, weiß jemand wie ich in einem td ein div über die tabelle legen kann? So wie ich es jetzt mache verschiebt es die tabelle (weil es im td bleiben will).
Jemand ne Idee?
| |
position:absolute;
|
|
|
|
|
|
|
| Zitat von [DK]Peacemaker
Nochmal ein .NET Thema:
| |
Könntest du solche Posts vieleicht einfach immer in Spoiler Tags schreiben? Ich mein so weit davon entfernt ist es nicht und man muss sein Gehirn nicht damit belasten. \o/
|
|
|
|
|
|
|
| Zitat von SirSiggi
| Zitat von [DK]Peacemaker
Nochmal ein .NET Thema:
| |
Könntest du solche Posts vieleicht einfach immer in Spoiler Tags schreiben? Ich mein so weit davon entfernt ist es nicht und man muss sein Gehirn nicht damit belasten. \o/
| |
Die Idee ist gar nicht so schlecht, werde ich in Zukunft versuchen.
|
|
|
|
|
|
|
Du könntest deine Texte allerdings auch in MOD-Tags setzen
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.
|
|
|
|
|
|
|
Au...gen...tin...ni....tus......
|
|
|
|
|
|
|
|
|
|
|
STellt euch nicht so an :-)
|
|
|
|
|
|
|
du hast so viel stil wie ein mantafahrer.
|
|
|
|
|
|
|
|
|
|
|
Dann halt wie ein stilloser Mantafahrer... -.-
|
|
|
|
|
|
|
[ ] trigger begreift.
okay, ich hab alle haken gesetzt. was bessern wir als erstes aus?
|
|
|
|
|
|
|
DU hast doch gar keinen Haken gesetzt. Haha, dum!
|
|
|
|
|
|
|
| Zitat von [DK]Peacemaker
Daher habe ich mir gedacht, es wäre ja cool, die benötigten Tabellen zuerst in einen kleinen SQL-Server einzulesen und die Abfragen dann auf diesem auszuführen. Ich habe bereits eine kommerzielle Lösung gefunden, die es erlaubt normale SQL-Abfragen auf DataSets auszuführen; aber es ist eben kommerziell.
Rein von den Abfragen her, wäre ich in der Lage eine Tabellen-Struktur selbstständig zu erstellen, daher stellt sich nur die Frage, wie bekomme ich zum Beispiel eine SQL Server Compact Edition Datenbank erstellt, ohne eine Datei dafür zu haben? Ich möchte auch keine Dummy-Datei haben, deren Inhalt ich immer wieder zurücksetze.
Könnte vielleicht etwas sein, dass Garland weiß, wegen seiner Erfahrung mit dem Compact-Framework.
| |
mit dem Sql Server Compact hab ich noch nicht gearbeitet. Was du beim Compact Framework aber immer im Hinterkopf behalten musst: du hast auf den Geräten teilweise sehr begrenzte Ressourcen. Bei meinem Projekt habe ich rund 12000 Paletten im Speicher des Geräts (64 MB zzgl. DiskOnChip) behalten müssen. Zuerst habe ich das objektorientiert gelöst, indem ich eine Klasse für die Paletten erstellt und diese dann in einem Dictionary (mit dem Palettencode als Key) gehalten habe. Ergebnis: viel zu hoher Speicherverbrauch. Jetzt habe ich die Datenmenge auf ein absolutes Minimum gekürzt und halte nur noch zwei Strings (Palettennummer und Materialnummer, weniger geht fast nicht) in einem Dictionary.
Wenn du einen SQL-Server oder was ähnliches (z. B. SqLite) einsetzt, musst du auch an die Ausführungsgeschwindigkeit denken, die stark vom Speichermedium abhängt. Wenn du die Datenbank im Hauptspeicher des Geräts erzeugst (also in dem Speicher, der sowohl für laufende Programme als auch fürs Dateisystem genutzt wird), ist die Geschwindigkeit soweit in Ordnung. Ziehst du die Datenbank aber auf der DiskOnChip hoch, kann die Geschwindigkeit dramatisch einbrechen, da das oft eine arschlahme Flashdisk ist. Zumindest meine SQLite-Datenbank ist auf dem Datalogic-Scanner, den ich da nutze (und der war mit 1800 ¤ pro Stück nicht grad ein Sonderangebot), total eingebrochen. Deshalb halte ich die Daten überhaupt erst im Speicher, sonst hätte ich die auf die DiskOnChip ausgelagert.
Was dein eigentliches Problem angeht: Zumindest SQLite kann das, was du da willst. Vor allem Datenbanken on the fly erzeugen und Queries darauf absetzen ist kein Problem. Ist auch kein Dienst, sondern nur eine blöde Library, die in deiner Anwendung geladen wird. Großer Vorteil: läuft einfach. Keine Konfiguration von Zugriffsrechten, Speicherorten oder anderem Kram. Du sagst: nimm Datei X, leg Tabelle X, Y und Z an - fertig. Beim Beenden des Programms einfach die Datei löschen und alles ist sauber. Ob ein relevanter Geschwindigkeitsunterschied zwischen SQLite und dem Compact Server besteht, weiß ich leider nicht.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von GarlandGreene am 08.08.2008 15:13]
|
|
|
|
|
|
Ah Danke soweit. Die Geschichte mit dem Compact Framework finde ich interessant, da ich da ab und an auch mal mit rumspiele. (Wobei man XDA ja jetzt kaputt ist).
Zur Not, kann ich ja die blanke SQL-Server Datei als Resource in die DLL einbinden. Hatte nur eine kleine Hoffnung, dass das auch einfacher geht. Zumal ich auch mehrere dieser "Datenbanken" einbinden können möchte.
Aber aktuell nervt mich gerade eine SSH Library für .NET (sharpssh). Die mir eine FileNotFoundException wirft, aber für die Zieldatei. Also ist da irgendwo ein verirrter Zugriff drin. Leg ich wohl erstmal bei Seite, obwohl es ich eigentlich brauche.
|
|
|
|
|
|
|
Was genau heißt "ohne eine Datei dafür zu haben"? Ne neue Datenbank(-datei) erstellen geht mit der Compact Edition in zwei oder drei Zeilen, das ist eigentlich nur Engine instanziieren, und dann "Erstelle Datenbank in Pfad x mit Parameter y". Tabellen da drin werden dann auch haargenau wie beim großen Bruder per T-SQL angelegt. Das wird gar nicht groß ins System eingeknüpft, ist auch nur ne einzelne Datei, die man danach gefahrlos killen kann. Muss nur halt wirklich auf Platte erstellt werden, und, soweit ich weiß, durch den Prozess gelockt werden können. Die eigentliche Datenhaltung findet aber trotzdem weitestgehend im Hauptspeicher statt, meine ich - also keine übermäßigen Disk-I/O-Orgien.
Hindert dich aber ja keiner, die .sdf-Datei z.B. im Tempverzeichnis zu erzeugen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von igor]2 am 08.08.2008 16:11]
|
|
|
|
|
|
print_r ist verdammt sexy.
|
|
|
|
|
|
|
Danke nochmal für den Hinweis, habe das beim Erstellen der Datenbank bereits herausgefunden. Dank Path.GetTempFileName habe ich dafür auch schon eine nette Lösung gefunden
|
|
|
|
|
|
|
kurze zwischenfrage:
brauch ich das schluesselwort 'self' nur bei methoden/eigenschaften die als static deklariert wurden und auf die ich dann zugreifen will? (da ich ja $this nicht verwenden darf)
Beispiel:
|
PHP: |
class Foo
{
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;
}
}
|
|
richtig?
|
|
|
|
|
|
|
Ich möchte unter Vista eine Festplatte (angeschlossen per USB) halbwegs sauber löschen.
Wieviele Durchgänge brauche ich? Welches Tool setze ich am besten ein?
|
|
|
|
|
|
|
dban?
/weiß aber nicht ob das ueber usb geht ...
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Renga am 08.08.2008 18:06]
|
|
|
|
|
|
Hm ne dass muss man ja booten, in dem fall gibts da ja bestimmt was bequemeres. ist schließlich keine systemplatte.
Zu deiner Frage: Du hast recht.
:: ist ein Scoping Operator. "Scope Resolution Operator". Das Scoping erfolgtr daraufhin statisch.
Scoping ist ein relativ wichtiger Begriff den du können solltest. Deine Frage impliziert zudem, dass du das Konzept der Objekte vielleicht noch nicht so wirklich begriffen hast. Wenn du objektorientiert arbeiten willst, müssen die Grudnlagen aber sitzen! Lies dich da besser nochma etwas rein.
|
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von TriggerTG am 08.08.2008 18:08]
|
|
|
|
|
|
Ja dann sag mir doch was ich nicht blicke.
eigentlich ist mir klar was ich mit "::" mache ...
|
|
|
|
|
|
|
So mein "In-Speicher" Sql Server funktioniert. Noch ein bisschen Refactoring und schon kann ich weiter machen.
|
|
|
|
|
|
|
|
|
|
|
Hmmm, die wenigen Programme die ich finde sagen alle "Laufwerk nicht erkannt oder können nicht das laufwerk formatieren (write error)
Vista. HDD ist per SATA-USB-Adapter angeschlossen.
WOdran könnte das liegen?
|
|
|
|
|
|
|
Vermutlich an Vista
Oder der USB-Adapter is putt.
|
|
|
|
|
|
|
| Zitat von TriggerTG
Hmmm, die wenigen Programme die ich finde sagen alle "Laufwerk nicht erkannt oder können nicht das laufwerk formatieren (write error)
Vista. HDD ist per SATA-USB-Adapter angeschlossen.
WOdran könnte das liegen?
| |
Einfach mal über die Datenträgerverwaltung versucht? Zumindest kannst du ja auch das Formatieren erstmal ausprobieren.
|
|
|
|
|
|
|
Nein, die Festplatte kann ich ja ansonsten ganz normal über den Explorer lesen und schreiben.
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |