none
Wo haltet ihr persistente Daten RRS feed

  • Frage

  • Hallo,

    ich schreibe ein Programm, bei dem eine umfangreiche Objektliste aus einer Datenbank beim Booten geladen wird.

    Der Zugriff auf diese Objektliste soll sehr schnell sein.

    Wie würdet ihr solche persistente Daten organisieren?

    Danke Michael

     

    Mittwoch, 2. November 2011 07:41

Antworten

  • Hallo Michael,

    die Liste ist etwas in die Jahre gekommen.
    Das Entity Framework und LINQ To SQL fehlen da (wenn auch keine klassische OSS).

    Nur klärt das noch nicht, wonach Du eigentlich suchst, wenn man die Ausgangsfrage zugrunde legt.

    Die dort aufgeführten ORMs stellen zunächst eine Datenzugriffsschicht bereit.

    Wobei der eine oder andere davon ein über Caching verfügt,
    was eine Steigerung der Zugriffsgeschwindigkeit mit sich bringen kann.
    Zum dauerhaften Vorhalten von Daten im Speicher ist das weniger geeignet,
    da diese Caches sich an den Bedürfnissen des ORMs orientieren - z. B. NHibernate,
    stellvertretend für andere:
    http://davybrion.com/blog/2009/02/quickly-setting-up-and-using-nhibernates-second-level-cache/

    Eine "richtige" allgemeinere Cache Lösung wäre eher Windows Server AppFabric,
    siehe dazu Windows Server AppFabric-Cachefeatures.

    Was wiederum für kleinere Bedürfnisse überdimensioniert sein kann.

    Deswegen wäre es hilfreich, wenn Du die Art der Daten
    und die Gründe für das Vorhalten im Speicher näher erläutern würdest.

    Gruß Elmar

    • Als Antwort markiert mimuel Dienstag, 6. Dezember 2011 13:22
    Mittwoch, 2. November 2011 12:51
    Beantworter

Alle Antworten

  • Hallo Michael,

    den wichtigsten Part hast Du vergessen: _Wie_ willst Du auf die Objekte zugreifen? Nur über Index? Auch mit dynamischer Suche? Welche Art von Objekten sind das? ...?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Mittwoch, 2. November 2011 08:23
    Moderator
  • Hi,

    wenn ich schnell persistente daten halten will mache ich es im Speicher. Aber Achtung nicht zu viele.

    Ausserdem wird das per schnellem HashArray erledigt ;-)

    Aber die Frage ist, wie Stefan angemerkt hat, zu unkonkret um darauf eine verlässliche Antwort zu geben.

    Grüße

    Mittwoch, 2. November 2011 08:26
  • Ja, wahrscheinlich über Index
    Mittwoch, 2. November 2011 09:09
  • Hi,

    Hier gibt's ja auch Persistenz Frameworks:

    http://csharp-source.net/open-source/persistence

    Habt ihr damit Erfahrungen?

    Lohnt das?

    Danke Michael

    Mittwoch, 2. November 2011 09:23
  • Hallo Michael,

    die Liste ist etwas in die Jahre gekommen.
    Das Entity Framework und LINQ To SQL fehlen da (wenn auch keine klassische OSS).

    Nur klärt das noch nicht, wonach Du eigentlich suchst, wenn man die Ausgangsfrage zugrunde legt.

    Die dort aufgeführten ORMs stellen zunächst eine Datenzugriffsschicht bereit.

    Wobei der eine oder andere davon ein über Caching verfügt,
    was eine Steigerung der Zugriffsgeschwindigkeit mit sich bringen kann.
    Zum dauerhaften Vorhalten von Daten im Speicher ist das weniger geeignet,
    da diese Caches sich an den Bedürfnissen des ORMs orientieren - z. B. NHibernate,
    stellvertretend für andere:
    http://davybrion.com/blog/2009/02/quickly-setting-up-and-using-nhibernates-second-level-cache/

    Eine "richtige" allgemeinere Cache Lösung wäre eher Windows Server AppFabric,
    siehe dazu Windows Server AppFabric-Cachefeatures.

    Was wiederum für kleinere Bedürfnisse überdimensioniert sein kann.

    Deswegen wäre es hilfreich, wenn Du die Art der Daten
    und die Gründe für das Vorhalten im Speicher näher erläutern würdest.

    Gruß Elmar

    • Als Antwort markiert mimuel Dienstag, 6. Dezember 2011 13:22
    Mittwoch, 2. November 2011 12:51
    Beantworter
  •  

    Hallo Elmar,

    Vielen Dank für Deine Antwort.

    Und jetzt eine etwas detailiertere Beschreibung:

    Ich hab eine Client-Server-Architektur bei der der Server von allen Clients Nachrichten erhalten kann,

    diese Nachrichten identifiziert, ergänzt und an ausgewählte Clients verteilt.

    Um die Informationen wie die Nachrichten identifiziert, ergänzt und verteilt werden sollen stehen im einem

    persitenten Objekt-Array.

    Der Ablauf ist grob so :

    - ein Client schickt eine Nachricht mit einem eindeutigen Index an den Server

    - der Server identifiziert die Nachricht anhand des Indexes

    - der Server erstellt ein Objekt, dass er mit den entsprechenden Objekt-Array Daten ergänzt

    - der Server verteilt das Objekt an die Clients die im Objekt-Array vereinbart sind

    Gruß Michael

     

     

     

     

    Donnerstag, 3. November 2011 08:10