2012-04-14 16 views
1

Ich frage mich, ob es eine Möglichkeit gibt, einen Netzwerk-Stream als Datei zu behandeln. Ich könnte falsch liegen, aber ich sehe eine Datei als eine Array-Liste von Bytes. Wenn Sie eine Datei in Windows öffnen und Sie schreiben, fügen Sie Bytes in diese Datei (Array-Liste), glaube ich.Zugriff sqlite Datenbank über Netzwerk-Stream

Ich erstelle ein Programm, wo ich es mit einer SQLite-Datenbank bereitstellen. Ich erstelle auch die Client-Version, wo es eine Verbindung zu dieser Datenbankdatei im Netzwerk herstellt.

Damit die Benutzer eine Verbindung zur Datenbankdatei herstellen können, müssen sie die Anmeldeinformationen angeben, um auf Daten in dieser Datenbank zugreifen zu können. Ich möchte sie in die Lage versetzen, eine Verbindung herzustellen, ohne diese Informationen eingeben zu müssen.

Dinge, die ich nur gedacht:

  • meine Anwendung stattdessen mit SQL-Server bereitstellen. (Es ist nicht einfach, eine Anwendung mit einem SQL-Server zu installieren, wo sie den Server automatisch installiert, tcp-Verbindungen und alle notwendigen Konfigurationen aktiviert, um dies zu ermöglichen. Außerdem dauert es etwa 7 Minuten, wo sqlite weniger als 20 Sekunden benötigt!

  • Ich benutze WCF, um mit dem Server zu sprechen, damit ich eine Funktion für jede der Abfragen, die ich verwenden möchte, machen kann.Wenn ich also * aus Produkten auswählen möchte, kann ich die Methode SelectAllFromProducts() aufrufen auf dem WCF-Service ... (Hier erfinde ich das Rad irgendwie neu.) Auch das schöne daran wäre, dass meine Abfragen viel schneller sein werden, glaube ich. Sqlite ist serverless also, wenn Sie alle Artikel im Produkt finden, wo Produktname ist wie 'foo', wenn Sie darüber nachdenken, muss ein Computer auf alle Datensätze in der Datenbank über das Netzwerk zugreifen.Es wird schneller sein, wenn die lokale Berechnung r macht das und sendet die wenigen Ergebnisse an den Client.

Antwort

1

Ich denke nicht, dass es eine gute Idee ist, Sqlite über das Netzwerk zu verwenden. Ich verwende derzeit Sqlite aber als lokale Dateisystemdatenbank.

In einer Client-Server-Architektur sind Sie mit einigen RDBMS besser anstatt SQLite

Client/Server-Anwendungen

Wenn Sie viele Client-Programme haben eine gemeinsame Datenbank über ein Netzwerk zugreifen, sollten Sie Ziehen Sie in Betracht, eine Client/Server-Datenbank-Engine anstelle von SQLite zu verwenden. SQLite funktioniert über ein Netzwerk-Dateisystem, aber wegen der Latenz mit den meisten Netzwerk-Dateisystemen, Leistung wird nicht gut sein. Außerdem enthält die Dateisperrlogik vieler Netzwerkimplementierungen von Fehler (sowohl unter Unix als auch unter Windows). Wenn die Dateisperrung nicht wie gewünscht funktioniert, ist es möglicherweise möglich, dass für zwei oder mehr Client-Programme denselben Teil von derselben Datenbank zur gleichen Zeit ändert, was zu einer Beschädigung der Datenbank führt. Da dieses Problem von Fehlern in der zugrunde liegenden Implementierung des Dateisystems herrührt, kann SQLite nichts dagegen tun.

Überprüfen Sie bitte diesen Link für Appropriate use for Sqlite und springen

Situationen Abschnitt, wo eine andere RDBMS Bessere

+0

SQLite behauptet, funktioniert möglicherweise mehrere Verbindungen zu unterstützen. Ich habe viele Probleme beim Abfragen der Datenbank von mehreren Threads alle mit der gleichen Verbindung erlebt. Wenn ich jedem Thread seine eigene Verbindung zuweise, ist alles in Ordnung. Der Grund, warum ich sqlite verwenden möchte, ist, dass es einfach zu implementieren ist. Ich habe versucht, meine Anwendung mit SQL Server bereitzustellen, und das ist nicht einfach und es dauert zu viel Zeit zu installieren. –

+0

Zeit zu installieren? ernsthaft, es ist eine einmalige Sache, Sqlite wird Ihnen eine Menge Probleme in der Client-Server-Architektur geben. – Habib

+0

Sie haben Recht, alles ist für das gedacht, was es ist. Zuerst muss ich eine stille Installation von SQL Server Express durchführen und dann muss ich dieses Problem durchgehen: http://StackOverflow.com/questions/9138172/enable-tcp-ip-remote-connections-to-sql- Server-Express-bereits installierte Datenbank. Ich denke nicht, dass das einfach ist, aber es ist möglich ... Deshalb wollte ich sqlite verwenden –