Buffer Manager für Datenbank

Status
Nicht offen für weitere Antworten.

J~man

Mitglied
Hallo!

Freut mich, dass ich dieses Forum hier gefunden habe! Ich hoffe, dass ich hier einiges lernen kann :toll:

Zu diesem Zweck komme ich auch direkt mal mit meiner ersten Frage daher, wobei ich mir nicht sicher bin, ob die hier in der Datenbanksektion oder im Anfängerbereich besser aufgehoben wäre.

Also, folgende Aufgabe:
Ich soll einen "storage layer" für eine neue Datenbank schreiben. Dazu gehört u.a. auch, dass ich einen Buffer Manager schreiben soll, der den Buffer Pool steuert, dessen Größe bei der Datenbankinit. angegeben wird. Der Buffer Manager soll dabei LRU verwenden um Pages vom Speicher auf die Festplatte zu schreiben.
Hier ein paar Begrifferklärungen aus unseren Folien:
bufferSize = size of buffer pool in pages
Page frame: can hold single page in memory
Buffer pool: collection of page frames
Buffer manager: manages buffer pool

So, nun stellt sich mir natürlich die Frage, wie ich das am besten in Java hinkrieg. Dazu habe ich folgendes im Internet gefunden: java:lru-cache - Java Wiki
Dazu ein paar Fragen:
- was ist der load factor?
- jedes Mal wenn ich put mache, wird removeEldestEntry ausgeführt. Wenn das true zurück gibt, wird der Parameter aus der Liste gelöscht?
- woher genau weiß ich, welches der LRU Entry der Map ist?
- Warum wird hier: LinkedHashMap (Java 2 Platform SE v1.4.2) behauptet, dass diese Impl. immer true zurück gibt?!
- Bessere Möglichkeiten?

Danke vielmals!
J~man
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
- was ist der load factor?
davon steht doch nix in dem Link

meinst du bei LinkedHashMap?
API hift:
> A linked hash map has two parameters that affect its performance: initial capacity and load factor. They are defined precisely as for HashMap.
->
> The load factor is a measure of how full the hash table is allowed to get before its capacity is automatically increased. When the number of entries in the hash table exceeds the product of the load factor and the current capacity, the capacity is roughly doubled by calling the rehash method.

dazu sollte man aber allgemein das Verfahren einer Hashtabelle kennen
Hashtabelle ? Wikipedia

- jedes Mal wenn ich put mache, wird removeEldestEntry ausgeführt. Wenn das true zurück gibt, wird der Parameter aus der Liste gelöscht?
genau
- woher genau weiß ich, welches der LRU Entry der Map ist?
musst du nicht wissen, die Map weiß das,
wahrscheinlich liefert keySet().iterator().next() als ersten Key den ältesten,
falls du es auch erfahren willst

- Warum wird hier: [..] behauptet, dass diese Impl. immer true zurück gibt?!
wird nicht oder genauer bitte
 

J~man

Mitglied
Danke für deine Antwort. Das mit dem Load Factor zumindest hätte ich wohl selbst herausfinden können.

wird nicht oder genauer bitte
wenn du hier schaust: LinkedHashMap (Java 2 Platform SE v1.4.2))
Dann steht da:

"This implementation merely returns false (so that this map acts like a normal map - the eldest element is never removed). "

Und ich seh nicht ein warum...Wahrscheinlich versteh ich nur den Text irgendwie falsch.

Für meine derzeitige Aufgabe ist das leider jedoch auch nicht so wichtig, weil wir wohl alles selbst schreiben sollen.
D.h. als Buffer reserviere ich mir nur Speicher, und ich glaube das geht so:
Java:
Byte[] cache = new Byte[2048];
richtig?
 
M

maki

Gast
"This implementation merely returns false (so that this map acts like a normal map - the eldest element is never removed)."
Das umschreibt doch nur das Verhalten der default Implementierung:
Java:
protected boolean removeEldestEntry(Map.Entry JavaDoc<K,V> eldest) {
         return false;
     }

und das was passiert wenn man sie wie folgt überschreibt:
Java:
    private static final int MAX_ENTRIES = 100;

    protected boolean removeEldestEntry(Map.Entry eldest) {
       return size() > MAX_ENTRIES;
    }
steht ja in der Doku ;)

Ein Blick in den in den Aufruf könnte auch zu Aufklärung beitragen:
Java:
     /**
      * This override alters behavior of superclass put method. It causes newly
      * allocated entry to get inserted at the end of the linked list and
      * removes the eldest entry if appropriate.
      */
     void addEntry(int hash, K key, V value, int bucketIndex) {
         createEntry(hash, key, value, bucketIndex);

         // Remove eldest entry if instructed, else grow capacity if appropriate
         Entry<K,V> eldest = header.after;
         if (removeEldestEntry(eldest)) {
             removeEntryForKey(eldest.key);
         } else {
             if (size >= threshold)
                 resize(2 * table.length);
         }
     }
 

J~man

Mitglied
hm, okay, ich denke das habe ich jetzt verstanden :)

Da wir allerdings so Datenstrukturen nun nicht verwenden dürfen, muss ich irgendwie auf "einfachen Speicher" zurückgreifen.

Ist es richtig, dass ich mir mit
Java:
byte[] cache = new byte[x*2048]
x*2048 byte im Speicher "reserviere"?
Wenn ich jetzt einen Integer hab, der 4 byte groß ist, wie schreibe ich den dann darein?

Ich hoffe ihr versteht was ich meine. Ich muss sozusagen einen Cache für die Datenbank wirklich selber schreiben, der dann nach dem LRU Prinzip arbeitet.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state Datenbankprogrammierung 2
reibi Derby/JavaDB Derby russty manager deaktivieren Datenbankprogrammierung 3
B HSQLDB Datenbank Manager Datenbankprogrammierung 19
D Verknüpfung auflösen für Frontend Datenbankprogrammierung 7
R Beste Lösung für User Erstellung in mongodb Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
Zrebna Empfehlung für ein kostenloses DB-Hosting gesucht Datenbankprogrammierung 6
M Lösungsvorschläge für Multi-User Datenbankprogrammierung 1
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
Kirby.exe Denkanstoß für Ranking Datenbankprogrammierung 1
L Oracle Repräsentative Namen für die Column Types Datenbankprogrammierung 9
OnDemand Struktur für Parent / Child Produkt Datenbankprogrammierung 5
N ORM für Sqlite Datenbankprogrammierung 4
I Konzept: Klasse / Entity für Einstellung der Software Datenbankprogrammierung 3
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
B Datenmodell für Regeln + Bedingungen & Referenz auf andere Tabelle Datenbankprogrammierung 12
O Dokumentation für MariaDB 10.3. Datenbankprogrammierung 2
F MariaDatabase Einstellungen für Verbindungen Datenbankprogrammierung 5
Dimax MySQL Trigger für eine Spalte Datenbankprogrammierung 5
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
B Brauche Tipps für Datenbankdesign Datenbankprogrammierung 8
B Tabelle für "wiederkehrende Rechnungen" Datenbankprogrammierung 12
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
J Warum sind Sockets für einen Live-Chat sinnvoll? Datenbankprogrammierung 8
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
X PostgreSQL Datenbankdesign für Vokabeltrainer Datenbankprogrammierung 48
@SupressWarnings() HSQLDB Datenbank für mein Dorfbauspiel "Time of Kings" Datenbankprogrammierung 6
M Idee Umsetzung //NFC Eintrittskarten für Geburtstag Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
J SQLite Ich muss für mein Projekt meine Datenbank Kapseln Datenbankprogrammierung 2
J Tipps für ERM Datenbankprogrammierung 4
P Highlevel-Lösung für Speicherung von Baumstruktur mit unbekannter Tiefe Datenbankprogrammierung 1
F welche Datenbank für Messwerte? Datenbankprogrammierung 4
E Warum werden für Datenbanktabellen Schemanamen festgelegt? Datenbankprogrammierung 1
M DB Schema für Vokabeltrainer Datenbankprogrammierung 2
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
S HSQLDB Fehlermeldung für den Bildschirm Datenbankprogrammierung 3
L Datenmodell erstellen für eine Nutzertanalyse Datenbankprogrammierung 1
I Query für Geburtstage Datenbankprogrammierung 6
L Zentrale Datenbank im Internet für Spiele Highscores? Datenbankprogrammierung 1
P Derby/JavaDB Csv Datei für dieses Musterprogramm Datenbankprogrammierung 12
ruutaiokwu code-formatter für t-sql... Datenbankprogrammierung 12
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
T Mehrsprachigkeit für Tabellenfelder Datenbankprogrammierung 6
E MySQL Große Datenmengen reibungslos speichern für Gameserver Datenbankprogrammierung 6
F MSSql oder MongoDB für die Speicherung von POI Datenbankprogrammierung 9
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
P MySQL Historie für ein Objekt anlegen Datenbankprogrammierung 5
P MySQL eine richtige Datenbank für einen routenplaner erstellen Datenbankprogrammierung 2
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J Datenbank für Fragen/ Antworten Datenbankprogrammierung 7
O Datenbankschnittstelle für Java Datenbankprogrammierung 8
L Datenbank für kleinere Anwendungen Datenbankprogrammierung 3
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
S ich brauche tipps für JDBC Datenbankprogrammierung 4
I Hibernate - Best Practice für Lazy Loading Datenbankprogrammierung 3
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
GianaSisters SQL Befehl für allgemeine Datenbankexistenz Datenbankprogrammierung 4
B Beispiel für sicheres DBUsername/DBPassword handling Datenbankprogrammierung 4
I Anfänger-Tutorial für Hibernate gesucht Datenbankprogrammierung 3
heart_disease Beratung für Datenbankdesign Datenbankprogrammierung 13
C Embedded DB für Java Datenbankprogrammierung 26
J Unterstützung für verschiedene Datenbanken Datenbankprogrammierung 2
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
F suche Erstanschub für DB-Zugriff Datenbankprogrammierung 9
F MySQL SQL Abfrage für u.a. Spaltenname key Datenbankprogrammierung 4
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
F Performance-Tool für Oracle Datenbankprogrammierung 2
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
C Split String für SQl query Datenbankprogrammierung 10
A update methode für datenbank Datenbankprogrammierung 2
N Datenbank für Dateien Datenbankprogrammierung 6
N Datenbank für einen Stundenplan Datenbankprogrammierung 4
G welche Datenbanktabellen für folgende Attribute Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
S JPA (EntityManager für jeden Nutzer?) Datenbankprogrammierung 8
F SQL Voraussetzung für JDBC? Datenbankprogrammierung 10
R Bei Webformular DropDown Felder JA, NEIN! Was für einen Datentyp verwenden? Datenbankprogrammierung 7
T SSL Zertifikat für mysql datenbankzugriff Datenbankprogrammierung 6
T Debugger für SQL? Datenbankprogrammierung 5
Chtonian Effizientes Query System für Wortnachschlagewerk Datenbankprogrammierung 9
G Tabelle für Zeitraum sperren Datenbankprogrammierung 4
A Struct für Datenbank abfrage? Datenbankprogrammierung 12
O Hibernate für Eclipse Datenbankprogrammierung 5
T JPQL Query für eine Tabellenansicht Datenbankprogrammierung 2
D Sicherheit für Datenbankverbindung Datenbankprogrammierung 19
S Standard für Datenbanken Datenbankprogrammierung 3
R Entfernte MySQL Datenbank für lokale Swing-App Datenbankprogrammierung 8
Landei Mehre Werte für einen Prepared-Statement_Parameter übergeben? Datenbankprogrammierung 3
G Einheitliches Casting für Decimal und Integer-Werte Datenbankprogrammierung 5
G TippSpiel für Bundesliga programieren Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben