Datenbankwahl

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von iCanNonIc.

    Datenbankwahl

    Hallo,

    Ich habe eine Datenbank, mit vielen 1:n Relationen.
    Die Hauptaufgabe ist, viele Daten möglichst performant zu speichern.


    Denn ich habe etwa folgende Daten
    Ich habe etwa ca 300 Objekte vom Typ "a".
    Jeder Typ a hat im Durchschnitt ca 10 Objekte vom Typ b,
    diese widerum haben ca 350 Objeke vom Typ c.
    Ca 40 "d"-Objekte und 100 "e"-Objekte befinden sich jeweils in "c". Also wenig weniger als 150 Millionen Objekte :S

    Außerdem leider noch zwei weitere, deutlich kleinere Datenbanken mit etwa 10000 Einträgen.


    Meine Frage ist jetzt, wie sollte ich am besten Vorgehen, die Daten zu persistieren?

    Zunächst dachte ich daran, VelocityDB zu verwenden, welche ja eine nichtrationale Datenbank ist und dann die Relation zum Objekt "darüber" einfach als Eigenschaft zu speichern, außerdem noch, in welcher Datenbank sie liegt, denn mindestens in Objekt a könnte man ja für jedes Objekt eine Datenbank bauen. (Falls jemand schlauer ist, bitte hier versucht euer Glück ;) )
    Leider verhält sich VelocityDB nicht so wie gewünscht, ich raffe einige Funktionen nicht oder sie verhalten sich anders als im Handbuch beschrieben.

    Ich dachte allerdings, dass es vielleicht ein bereit ein Datenbanksystem gibt, das mit entsprechenden Daten(mengen) umgehen kann. Es muss auch "nicht mehr" als eben
    Lesen, Lesen (mit Bedingung), neu Schreiben und Updaten können. Also beispielsweise viele in SQL gegebene Funktionen werden überhaupt nicht benötigt.

    Kennt jemand eine Lösung für solch eine Problemstellung/Ansatz? Welche Datenmanagement würde ihr nehmen?
    probier doch einfach aus. Meiner Meinung nach sollte das jede DB können, selbst SqlCe und SqLite.
    Ah - von SqLite sagt man, es sei die schnellste überhaupt.

    Das wäre vlt. eine lustige Anwendung für DbGenerator:
    Bastel die DB-Struktur in ein typisiertes Dataset, und DBGenerator kann verschiedenerlei Datenbanken dazu generieren.

    Brauchst du Algos zum Befüllen und testen, aber die sind ja Standard-Sql, und auf jeder DB gleich - kannst du also wiederverwenden.
    Ich habe jetzt testweise versucht, ein kleines Dataset mit deinem Tool zu verwenden.
    Dennoch schmeißt mir dein Tool Fehler vor die Nase :S. Ich bin leider zu blöd, es zu bedienen:

    Ich hab versucht, dein PersonBerufDts.xsd in SQLite zu reproduzieren. (Ausgehend davon, das das Beispiel funktioniert)
    1. hab als Provider SQLite ausgewählt.
    2. hab dein PersonBeruf Dataset ausgewählt (Da kam ne Fehlermeldung, s. Fehler1)
    3. hab eine SQLite3 Datenbank erstellt (Test.s3db).
    (3.5. hab mitnem Tool SQLite Administrator rumprobiert, hat wunderbar funktioniert :) )
    4. Hab die Datenbank ausgewählt, kam Fehler2.jpg. Die Datenbank und der ConnectionString wurde dennoch eingetragen.
    DBGenerator sah letzlich wie in frmMain1 aus.
    Ein Parse Project sorgt jetzt dafür, dass er die Datenstruktur erkennt.

    Das mit dem Mapping klappt auch noch nicht so wie ich es machen wollte, aber du hattest ja erwähnt, dass "Visual Studio bei SQLite ab 3.5+ Zicken macht". Für andere Provider funktioniert das Mapping.

    Ich weiß jetzt nicht, wie ich da weiter vorgehen soll, sodass er die SQLite Datentypen nimmt.
    Ich hab versucht, manuell ein Mapping hinzuzufügen, aber das geht nicht, bzw. er übernimmt das DBName nicht, da steht immer Kein, egal, was man angibt.

    Propose SQL funktioniert scheinbar gut (noch nicht getestet, sieht aber gut aus)
    Execute SQL dagegen wirft, bei korrektem Dateipfad und sowohl bei (getestet) korrektem Syntax, als auch bei Quatch immer Fehler3 aus. (siehe Stacktrace unten)
    Ansonsten, definitiv hut ab, das Tool ist schon ziemlich mächtig, wenns denn so funktioniert wie gedacht ;)
    Vielleicht helfen dir die Infos ja weiter, es auch für SQLite so hinzubekommen.

    Notfalls muss ich halt Kein mit dem entsprechenden Datentyp manuell ersetzten, ist ja eigentlich machbar.

    Stacktrace Fehler3

    Informationen über das Aufrufen von JIT-Debuggen
    anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

    ************** Ausnahmetext **************
    System.NotSupportedException: Die angegebene Methode wird nicht unterstützt.
    bei DbGenerator.QuoteExtensions.GetFactory(ProjectRow rw) in C:\Users\iCanNon\Desktop\sql\DbGenerator\DbGenerator\DbGenerator\DbGeneratorDts.ProjectRow.vb:Zeile 237.
    bei DbGenerator.QuoteExtensions.CreateConnection(ProjectRow rw) in C:\Users\iCanNon\Desktop\sql\DbGenerator\DbGenerator\DbGenerator\DbGeneratorDts.ProjectRow.vb:Zeile 243.
    bei DbGenerator.DbGeneratorDts.ProjectRow.ExecuteSql(IEnumerable`1 sqlBuildUp) in C:\Users\iCanNon\Desktop\sql\DbGenerator\DbGenerator\DbGenerator\DbGeneratorDts.ProjectRow.vb:Zeile 183.
    bei DbGenerator.frmMain.AnyButton_Click(Object sender, EventArgs e) in C:\Users\iCanNon\Desktop\sql\DbGenerator\DbGenerator\DbGenerator\frmMain.vb:Zeile 85.
    bei System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
    bei System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
    bei System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
    bei System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
    bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei System.Windows.Forms.ToolStrip.WndProc(Message& m)
    bei System.Windows.Forms.MenuStrip.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Geladene Assemblys **************
    mscorlib
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18444 built by: FX451RTMGDR.
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll.
    ----------------------------------------
    DbGenerator
    Assembly-Version: 1.0.0.0.
    Win32-Version: 1.0.0.0.
    CodeBase: file:///C:/Users/iCanNon/Desktop/sql/DbGenerator/DbGenerator/DbGenerator/bin/Debug/DbGenerator.exe.
    ----------------------------------------
    Microsoft.VisualBasic
    Assembly-Version: 10.0.0.0.
    Win32-Version: 11.0.50938.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
    ----------------------------------------
    System
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
    ----------------------------------------
    System.Core
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll.
    ----------------------------------------
    System.Windows.Forms
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
    ----------------------------------------
    System.Drawing
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
    ----------------------------------------
    System.Configuration
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
    ----------------------------------------
    System.Xml
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.
    ----------------------------------------
    System.Runtime.Remoting
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll.
    ----------------------------------------
    System.Data
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll.
    ----------------------------------------
    System.Data.DataSetExtensions
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.DataSetExtensions/v4.0_4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll.
    ----------------------------------------
    GeneralHelpers
    Assembly-Version: 1.0.0.0.
    Win32-Version: 1.0.0.0.
    CodeBase: file:///C:/Users/iCanNon/Desktop/sql/DbGenerator/DbGenerator/DbGenerator/bin/Debug/GeneralHelpers.DLL.
    ----------------------------------------
    WinFormHelpers
    Assembly-Version: 1.0.0.0.
    Win32-Version: 1.0.0.0.
    CodeBase: file:///C:/Users/iCanNon/Desktop/sql/DbGenerator/DbGenerator/DbGenerator/bin/Debug/WinFormHelpers.DLL.
    ----------------------------------------
    System.Numerics
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll.
    ----------------------------------------
    System.Windows.Forms.resources
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
    ----------------------------------------
    Accessibility
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll.
    ----------------------------------------
    System.Data.OracleClient
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data.OracleClient/v4.0_4.0.0.0__b77a5c561934e089/System.Data.OracleClient.dll.
    ----------------------------------------
    System.Data.resources
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Data.resources.dll.
    ----------------------------------------
    System.Data.SqlServerCe
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.8876.1.
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Data.SqlServerCe/4.0.0.0__89845dcd8080cc91/System.Data.SqlServerCe.dll.
    ----------------------------------------
    System.Transactions
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll.
    ----------------------------------------
    mscorlib.resources
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.0.30319.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.
    ----------------------------------------
    Microsoft.VisualBasic.resources
    Assembly-Version: 10.0.0.0.
    Win32-Version: 11.0.50938.18408 built by: FX451RTMGREL.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic.resources/v4.0_10.0.0.0_de_b03f5f7f11d50a3a/Microsoft.VisualBasic.resources.dll.
    ----------------------------------------

    ************** JIT-Debuggen **************
    Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
    Konfigurationsdatei der Anwendung oder des Computers
    (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
    Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

    Zum Beispiel:

    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>

    Wenn das JIT-Debuggen aktiviert ist, werden alle Ausnahmefehler an den JIT-Debugger gesendet, der auf dem
    Computer registriert ist, und nicht in diesem Dialogfeld behandelt.


    Bilder
    • Fehler1.jpg

      21,11 kB, 398×152, 130 mal angesehen
    • Fehler2.jpg

      14,88 kB, 332×145, 119 mal angesehen
    • frmMain1.jpg

      100,78 kB, 784×453, 147 mal angesehen
    • Fehler3.jpg

      27,06 kB, 440×150, 142 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „iCanNonIc“ ()

    Tja, keine Ahnung. Bei mir gehts, mit meine SqLite-DB. Ich hab aus dem PersonDts erstellt, und es lief 100% wie im DbGenerator-Video ab: Beim Laden des Projekts kriegt man die Char-Spalte als ungemappt angezeigt. Dann wählt man die an, und drückt AddMapping, und mappt Char etwa auf text{1}, also das System.Char inne DB in ein Textfeld der Breite 1 hinterlegt wird.

    So Gott will, weil eine lauffähige Anwendung hab ich daraus jetzt noch nicht gebastelt. Nur so viel: Die Fehler die du aufzeigst kann ich nicht reproduzieren.

    Edit: Achja! Das ist vlt. das eine SqLite-Issue mit Framework4: Weil die SqLite fürs 3er-FW kompiliert wurde muss man inne app.config den startup-Tag austauschen:

    XML-Quellcode

    1. <startup>
    2. <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    3. </startup>
    Ohne das kann er keine DBFactory erzeugen, und daher wohl der Fehler. Frag mich bitte nichts genaueres danach.

    ErfinderDesRades schrieb:

    Die Fehler die du aufzeigst kann ich nicht reproduzieren.


    Das ist schade.
    Ich verwende das Framework 4.5.1 mit der Visual Studio 2012 Ultimate, SQLite Version ist 1.0.92 von hier.
    Vielleicht liegs ja an den Versionen. ?(
    Mit der "Kopf-durch-die-Wand" gehts ja, ich bekomme einen SQL Befehl für alle Tabellen, ignoriere alle Fehler/Exceptions...
    Aber wie du siehst, mein Hintergrundwissen ist beschränkt, ich habs mir gerade erst installiert... Hab davor mit SQL CE gearbeitet.
    Anyway, vielleicht nutzte ich auch einfach SQL-ce weiterhin, mir wars bisher nur zu mühsam, aber jetzt hab ich ja dein Tool ;)