Announcement

Collapse
No announcement yet.

Datenbank über das Internet bereitstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbank über das Internet bereitstellen

    Hallo,

    ich habe im Betrieb eine Paradox-Datenbank für verschiedene Anwendungsgebiete laufen. Da es seit der Umstellung von Novell auf NT-Netzwerk immer wieder zu Index-Korrupten kommt, möchten wir auf eine andere Datenbank umstellen. Natürlich mit möglichst geringen Aufwand. Dabei soll auch gleich noch beachtet werden, dass die Daten dann auch möglichst übers Internet für unsere Außendienstler und Reisenden zur Verfügung gestellt werden können.

    Welche Datenbank könnt ihr mir mit ruhigem Gewissen empfehlen und wie sieht es so ungefähr mit den Lizenzkosten aus. Wie sind die Lizenzen gereglet? Darf nur eine bestimmte Anzahl User gleichzeitig zugreifen (ca. 30 Leute gleichzeitig) oder benötigt jeder PC (ca. 120) seine eigene Lizenz?

    Für eure Tips bin ich äußerst dankbar

    Gruß Gerd

  • #2
    Hi<br>,wenn du einen IIS (NT-SERVER) hast schreib doch eine ISAPI DLL, Lizenzkosten fallen dafür nicht an. Allerdings ist die bereitstellung einer eigenen DB über WEB oft mit einem eigenen Server verbunden (Das kann teuer werden). Als Datenbank würde ich immer IB empfehlen (kostet als OpenSource auch nichts) oder
    MS-SQL Server

    Comment


    • #3
      Hallo,

      um editierbare Datenmengen über das Internet (HTTP) bereitzustellen, stellt Microsoft den ADO-Bruder <b>RDS</b> zur Verfügung. Auf der Server-Seiter wird der IIS (Internet Information Service) benötigt, auf der Client-Seite ein Windows mit installiertem MDAC (sollte Heute fast immer bereits der Fall sein). RDS ist kostenlos und stellt den Zugriff auf alle Datenbanken zur Verfügung, für die es OLE DB Provider oder ODBC-Treiber gibt. Als <b>ComputerName</b> für den Server-Rechner wird die Syntax <i>http://192.168.10.1</i> erwartet, die IP-Adress reicht aus, da die Datenmenge durch die RDS-Eigenschaft <b>ServerName</b> (zuständiges COM-Objekt) definiert wird.

      Ein Beispiel könnte so aussehen: <br>
      1. Client lädt die Daten herunter <br>
      2. Benutzer editiert im TDBGrid <br>
      3. Benutzer speichert seine Änderungen, wobei RDS + ADO die ganze Arbeit macht.
      <pre>
      { ************************************************** **************
      Autor : Andreas Kosch
      Compiler : Delphi 6.0 Enterprise
      Betriebssystem : Windows 2000 SP2
      Erstellt am : 12.07.2001
      Beschreibung : RDS-Client für DE2001Srv
      ************************************************** ************** }

      unit CltDE2001SrvRDSFrmMain;

      interface

      uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, StdCtrls, ExtCtrls, ComCtrls, Grids, DBGrids;

      type
      TFormRDS = class(TForm)
      StatusBar1: TStatusBar;
      RadioGroupConnect: TRadioGroup;
      EditIP: TEdit;
      RDSConnectionDE2001: TRDSConnection;
      DBGridCustomer: TDBGrid;
      ADODataSetCustomer: TADODataSet;
      DataSourceCustomer: TDataSource;
      MemoCustomer: TMemo;
      procedure RadioGroupConnectClick(Sender: TObject);
      procedure DataSourceCustomerDataChange(Sender: TObject; Field: TField);
      private
      { Private-Deklarationen }
      public
      { Public-Deklarationen }
      end;

      var
      FormRDS: TFormRDS;

      implementation

      {$R *.dfm}

      uses ADOInt;

      procedure TFormRDS.RadioGroupConnectClick(Sender: TObject);
      var
      vRS : OleVariant;
      aRS : ADOInt._RecordSet;
      begin
      ADODataSetCustomer.Active := False;
      DBGridCustomer.Visible := False;
      case RadioGroupConnect.ItemIndex of
      0 : RDSConnectionDE2001.Connected := False;
      1 : begin
      RDSConnectionDE2001.ComputerName := EditIP.Text;
      RDSConnectionDE2001.Connected := True;
      vRS := RDSConnectionDE2001.AppServer.CustomerRS;
      aRS := IUnknown(vRS) as _RecordSet;
      with ADODataSetCustomer do
      begin
      RecordSet := aRS;
      Active := True;
      end;
      DBGridCustomer.Visible := True;
      end;
      end;
      end;

      procedure TFormRDS.DataSourceCustomerDataChange(Sender: TObject;
      Field: TField);
      var
      iCustID : Integer;
      iResult : Integer;
      swAddrRow1,
      swAddrRow2,
      swAddrStr,
      swAddrHnr,
      swAddrPLZ,
      swAddrOrt : WideString;
      begin
      iCustID := ADODataSetCustomer.FieldByName('CustID').AsInteger ;
      iResult := RDSConnectionDE2001.AppServer.CustAddr(
      iCustID,1,swAddrRow1,swAddrRow2,swAddrStr,
      swAddrHnr,swAddrPLZ,swAddrOrt);
      with MemoCustomer.Lines do
      begin
      Clear;
      if iResult = 1 then
      begin
      Add(swAddrRow1);
      Add(swAddrRow2);
      Add(swAddrStr + ' ' + swAddrHnr);
      Add(swAddrPLZ + ' ' + swAddrOrt);
      end
      else
      Add('Es wurden keine Daten gefunden.');
      end;
      end;

      end.
      </pre>
      In meinem Buch <i>ADO und Delphi</i> sind die Hintergründe und das vollständige Beispielprojekt mit umfangreicher Beschreibung zu finden

      Comment


      • #4
        Hallo,

        vielen Dank für eure Tips. Das wie ist dabei rüber gekommen. Da das ganze in der Regel aber an der Performance scheitert, wäre es für mich sehr wichtig zu wissen, mit welcher Datenbank man so was am besten löst. Mit Paradox wird das wohl kaum gehen?

        Gruß Ger

        Comment


        • #5
          Hi <br>, die DB ist für die Geschwindigkeit nicht so entscheident, eher das du die Qualitäten der einen oder anderen DB voll ausnutzt. Eines gilt aber immer, je weniger Daten transportiert werden müssen um so schneller.<br> Stell dir einen Internetshop mit 50.000 Artikeln vor und die Suche würde nur über ein LIKE funktionieren (ist ja auch bequem) und auch noch 1000 Artikel finden und Anzeigen können, dann ist das auf jeder DB eher langsam. Je mehr du die Daten in Gruppen aufteilst und die gewünschte Information auf ein minimum reduzierst um so schneller. Also kann man sagen die schnellste DB ist dein Gehirnschmalz den du in ein Projekt steckst. Frag dich vorher wieviele Anfragen auf deine DB passieren, mit welcher Toleranz du Informationen liefern musst, wie Caches auf der Clientseite dich unterstützen können, auch ob du mit der DB Offline gehen kannst um Reparaturen durchführen zu können, etc. <br> Gruß Andreas H

          Comment


          • #6
            Hallo,

            der IIS verwendet einen Pool von 10 Arbeits-Threads je CPU, daher wird im Idealfall auch eine Datenbank benötigt, die über einen OLE DB Provider auf den automatischen Datenbankverbindungs-Pool von OLE DB zurückgreifen kann. Die eigene Anwendung (ISAPI, ASP oder ASP-Objekt) aktiviert bei jedem Aufruf (Methode) die Datenbankverbindung, ruft die Funktion auf und gibt sofort die Datenbankverbindung wieder frei. Da der Pool alles automatisch verwaltet, gibt es keine Performance-Probleme und die vorhandenen Datenbankverbindungen werden im Zeit-Multiplex-Verfahren sehr effektiv ausgenutzt. Wenn es bei dieser Web-Schnittstelle auf Performance angekommt, würde ich zum Microsoft SQL Server 2000 greifen (da hier der Zugriff über ADO automatisch Vorteile aus dem Datenbankverbindungs-Pool von OLE DB zieht)

            Comment

            Working...
            X