AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Hashtabelle oder binärer Baum in Datei

Offene Frage von "luke2"
Ein Thema von luke2 · begonnen am 22. Jan 2010 · letzter Beitrag vom 23. Jan 2010
Antwort Antwort
luke2

Registriert seit: 17. Jun 2009
117 Beiträge
 
#1

Hashtabelle oder binärer Baum in Datei

  Alt 22. Jan 2010, 00:05
Hi,

Ich würde gerne eine ganz simple Hashtabelle oder eine Art binären Baum in einer Datei anlegen und bearbeiten können, anstatt, wie üblich, im Speicher.
(So wie es auch die Datenbanken machen, glaube ich)

Leider fehlt mir ein guter Ansatz dafür.
Hat da jemand eine Idee oder Tip, wie man das am besten angehen kann?

Danke schonmal!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Hashtabelle oder binärer Baum in Datei

  Alt 22. Jan 2010, 03:49
Datenbanken arbeiten mit meist optimierten Bayer-Bäumen, nicht mit binären Bäumen oder Hashtabellen, zumindest auf Datenebene.
Nimm doch einfach eine freie kleine Datenbank (SQLLite z.B.), oder willst Du eine eigene schreiben?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
37.228 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Hashtabelle oder binärer Baum in Datei

  Alt 22. Jan 2010, 08:54
Datei im Arbeitsspeicher:

- man erstelle eine Datei
- mappe diese via MMF in einen Speicherbereich
- nun kann man seinen binären Baum oder was auch immer, direkt im Arbeitsspeicher (über 'ne eigene Speicherverwaltung) in dieser MMF bearbeiten
- und gespeichert würde automatisch
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Hashtabelle oder binärer Baum in Datei

  Alt 22. Jan 2010, 13:33
Zitat von himitsu:
Datei im Arbeitsspeicher:... (über 'ne eigene Speicherverwaltung) in dieser MMF bearbeiten...
Wozu MMF? Windows cached doch sowieso.

Dessenungeachtet verlagerst Du das Problem doch in "'ne eigene Speicherverwaltung". Wenn like2 aber auch lernen will, wie man soetwas *nicht* macht (filebasierte Hashmap bzw. Binärbau als Datastorage), dann hast du natürlich Recht.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
luke2

Registriert seit: 17. Jun 2009
117 Beiträge
 
#5

Re: Hashtabelle oder binärer Baum in Datei

  Alt 22. Jan 2010, 15:16
Mich interessiert die Umsetzung, da ich irgendwie noch keine richtige Vorstellung habe, wie man sowas am besten machen kann.
Also einfach nur, wie man eine Datenstruktur auf die Festplatte bzw. in eine Datei auslagert.

Ein ganz kurzer Beispielcode würde mir evtl. schon helfen
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Hashtabelle oder binärer Baum in Datei

  Alt 23. Jan 2010, 03:31
'Enfach so' ne Datenstruktur auszulagern bringt doch nichts, denn es wird sehr sehr langsam. Und wie himitsu schon erwähnte, muss man sich 'ne Speicherverwaltung ausdenken.

Such mal nach 'B-Tree' bei Google, du findest bestimmt eine Delphi-Umsetzung.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf