Userdaten in Hashmap speichern - Servlet

biker

Mitglied
Hallo Zusammen,

ich sitze an folgendem Problem: ich möchte mehr Performance aus meiner Web Anwendung herausholen und möchte daher Daten Cachen.

Ein wichtiger Bereich wären die Userdaten. Die Datenbank ist so aufgebaut, dass für jeden User verschiedene Daten geladen werden. Wenn die Daten aus der Datenbank kommen, kann zu einem User entweder keine, eine oder mehrere Zeilen vorhanden sein. Meine Idee ist es, dass ich die Daten in einer HashMap speicher um die Datenbankzugriffe zu minimieren.

Meine Fragen:

1. Ist das eine gute herangehensweise?
2. Wie kann ich die Keys so erstellen, dass jeder Key eindeutig ist? Wenn für einen User mehrere Zeilen vorhanden sind, muss das erkennbar sein.

Kann man den Key als String in der Form ("USER" + "_" + userId + "_" + column + "_" + row) erstelle

Dann wäre ein Key z.B. USER_123_Spalte0_1

Was denkt ihr?

Das wichtigste ist die Performance. RAM ist genug vorhanden.

Vielen Dank

biker
 
S

SlaterB

Gast
das kann viel bewirken, kann keinen Unterschied machen, kann Probleme bereiten wenn du Userdaten auch änderst,
viele Richtungen sind möglich, pauschal nicht zu sagen,

und eine Hashmap ist allgemein eine dafür geeignete Struktur, ja,

was column + row in deinem Key zu bedeuten haben ist für Außenstehende nicht zu erkennen, falls auch das deine Frage ist,
man kann die Meinung vertreten dass sich eher anbietet, nur zur UserId einen großen Eintrag zu speichern,
darin dann geordnete Listen/ Arrays für Rows/ Columns/ was auch immer,
wenn die normalen User-Daten gemeint sind, vielleicht ein normales User-Objekt?!

nicht erfreulich klingt der Gedanke, die Datenbank mit Tabellenstruktur irgendwie nachzubauen
 
N

nillehammer

Gast
1. Ist das eine gute herangehensweise?
Kann man machen, wenn es einen nicht stört, dass man in einer laufenden Session mit Daten im Cache arbeitet, die möglicherweise veraltet sind, weil man Änderungen in der Datenbank nicht mitbekommt.

2. Wie kann ich die Keys so erstellen, dass jeder Key eindeutig ist? Wenn für einen User mehrere Zeilen vorhanden sind, muss das erkennbar sein.
Mehrere Zeilen zu einer einzigen Entität in einer Tabelle zu haben ist jedenfalls äußerst unüblich. Hier scheint mir was am Datenmodell faul zu sein. Möglicherweise müsstest Du hier normalisieren. Sprich, zu jedem User genau einen Datensatz in einer User-Tabelle halten, die Daten, die je User mehrfach vorkommen in eine andere Tabelle und dann Fremdschlüssel auf die User-Tabelle.
 

biker

Mitglied
1. Ist das eine gute herangehensweise?
Kann man machen, wenn es einen nicht stört, dass man in einer laufenden Session mit Daten im Cache arbeitet, die möglicherweise veraltet sind, weil man Änderungen in der Datenbank nicht mitbekommt.

2. Wie kann ich die Keys so erstellen, dass jeder Key eindeutig ist? Wenn für einen User mehrere Zeilen vorhanden sind, muss das erkennbar sein.
Mehrere Zeilen zu einer einzigen Entität in einer Tabelle zu haben ist jedenfalls äußerst unüblich. Hier scheint mir was am Datenmodell faul zu sein. Möglicherweise müsstest Du hier normalisieren. Sprich, zu jedem User genau einen Datensatz in einer User-Tabelle halten, die Daten, die je User mehrfach vorkommen in eine andere Tabelle und dann Fremdschlüssel auf die User-Tabelle.

Es sind nicht die Userdaten, die in mehreren Zeilen in der Datenbank stehen, sondern Daten, die mit dem User verknüpft sind. Z.B. so wie onlineshops das mit Ihren Empfehlungen "Zu diesem Artikel passen auch noch die Artikel X, Y und Z" machen.
 
S

SlaterB

Gast
der Vorteil von Java gegenüber Datenbanken ist doch gerade die Objektorientierung gegenüber simplen Columns + Rows,
erstelle eine Klasse User, falls noch nicht vorhanden, darin eine Liste der empfohlenen Artikel um bei dem Beispiel zu bleiben, usw.

hängt natürlich von deinen Daten und deiner Verarbeitung ab,
aber mit dem Cache hast du nicht nur die Möglichkeit, DB-Datenzugriffe zu vermeiden,
du kannst auch gleich allgemeine Schritte wie das Sammeln der Informationen in Listen, "Aufbereitung der Daten", durchführen und später sparen
 

biker

Mitglied
man kann die Meinung vertreten dass sich eher anbietet, nur zur UserId einen großen Eintrag zu speichern,
darin dann geordnete Listen/ Arrays für Rows/ Columns/ was auch immer,
wenn die normalen User-Daten gemeint sind, vielleicht ein normales User-Objekt?!

nicht erfreulich klingt der Gedanke, die Datenbank mit Tabellenstruktur irgendwie nachzubauen

Angenommen ich nehme für jeden Eintrag in der Map die UserId als Key. Wie speicher ich dann am besten die Objekte, wenn aus der Datenbank mehrere Zeilen pro User enthalten sind?
 
S

SlaterB

Gast
am besten auf geeignete Weise

ohne Infos gibts auch keine neuen Infos,
ohne fachliche Strukturierung kannst du nur Listen oder noch mehr Maps verwenden,
muss dann nicht viel besser sein als deine Lösung
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JAVA - Properties Datei mit Userdaten Allgemeine Java-Themen 7
D Userdaten + Datenbank? Allgemeine Java-Themen 11
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
T HashMap values Bearbeitung Allgemeine Java-Themen 4
T Hashmap Values Bearbeitung Allgemeine Java-Themen 1
JavaJakob22 Bestimmte HashMap importieren Allgemeine Java-Themen 4
killig HashMap mit if-Anweisung überprüfen Allgemeine Java-Themen 4
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
L HashMap Allgemeine Java-Themen 10
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
B HashMap Duplikate Allgemeine Java-Themen 4
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
F Tabelle aus CSV, 2 dimensionale HashMap? Allgemeine Java-Themen 4
D Mit Java PHP hashmap lesen Allgemeine Java-Themen 1
H Swing HashMap zu Tabelle macht mir Probleme Allgemeine Java-Themen 4
B HashMap aus Value Key bekommen Allgemeine Java-Themen 2
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
J Problem bei Hashmap Key-Abfrage Allgemeine Java-Themen 4
X JSONObject auslesen und in HashMap hinterlegen Allgemeine Java-Themen 16
N Werte aus Hashmap auslesen und übertragen Allgemeine Java-Themen 8
JavaWolf165 JsonObject in HashMap umwandeln Allgemeine Java-Themen 16
R ArrayList und HashMap Allgemeine Java-Themen 7
L Assoziatives Datenfeld, schneller wie Hashmap Allgemeine Java-Themen 35
G Methoden HashMap speichert unter falschen Schlüsseln Allgemeine Java-Themen 6
D Verschachtelte HashMap initializieren Allgemeine Java-Themen 1
L Variablen HashMap nimmt value nicht an Allgemeine Java-Themen 3
R Hierarchie mit HashMap darstellen Allgemeine Java-Themen 19
D Datentypen HashCollision in HashMap Allgemeine Java-Themen 3
Z Concurrent Modification Exception - HashMap (kein remove) Allgemeine Java-Themen 4
B Zugriff auf eine HashMap Allgemeine Java-Themen 4
T Hashmap mit geordneter/ungeordneter liste als Value Allgemeine Java-Themen 5
I HashMap key wird nicht erkannt trotz überschriebener equals/hashCode Methode Allgemeine Java-Themen 6
M Füllfaktor einer Hashmap Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
D Datentypen HashMap Allgemeine Java-Themen 5
R Collections Performance einer HashMap Allgemeine Java-Themen 26
C LinkedList und ArrayList in HashMap Allgemeine Java-Themen 4
T Erste Schritte HashMap<String, int> Allgemeine Java-Themen 2
K Hashmap sortieren Allgemeine Java-Themen 6
F HashMap überschreibt Daten von anderen HashMap Allgemeine Java-Themen 5
S HashMap containsKey liefert immer false zurück Allgemeine Java-Themen 15
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
K HashMap sorting verhindern Allgemeine Java-Themen 10
J Generic von einer ArrayList/HashMap bekommen Allgemeine Java-Themen 7
L HashMap mit Enum Keys Allgemeine Java-Themen 3
J Array als Schlüssel für HashMap Allgemeine Java-Themen 6
S Geschwindigkeit HashMap oder .getParent Allgemeine Java-Themen 5
V Hashmap-Frage Allgemeine Java-Themen 3
M HashMap - Ich bin verwirrt Allgemeine Java-Themen 3
H2SO3- multiple Hashmap Allgemeine Java-Themen 5
K Threading - schreiben auf Hashmap/löschen - ConcurrentModificationException Allgemeine Java-Themen 3
J NullPointerException mit HashMap Allgemeine Java-Themen 2
V Probleme mit eigener Hashmap Allgemeine Java-Themen 10
N HashMap<String,Vector<String>> a = new HashMap<String,Vector<String>>(); Allgemeine Java-Themen 4
I HashMap Problem... Allgemeine Java-Themen 3
C HashMap Allgemeine Java-Themen 12
Daniel_L Map/HashMap - Reihenfolge von Einträgen Allgemeine Java-Themen 4
L HashMap Key Reihenfolge umkehren Allgemeine Java-Themen 8
N wie greife ich auf hashmap in vector zu Allgemeine Java-Themen 9
J Inhalt von HashMap vergleichen Allgemeine Java-Themen 3
Z Serialisierung und Deserialisierung einer HashMap Allgemeine Java-Themen 17
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
T Hashmap füllen mit rs sortierung Allgemeine Java-Themen 9
D HashMap sortieren Allgemeine Java-Themen 2
P Große Datenmenge wie speichern (HashMap? TreeMap?) Allgemeine Java-Themen 11
D HashMap Problem Allgemeine Java-Themen 14
G Runnables aus Hashmap starten Allgemeine Java-Themen 4
J java.util.ConcurrentModificationException bei HashMap? Allgemeine Java-Themen 2
G HashMap key ändern Allgemeine Java-Themen 5
L HashMap / Objekte auf Festplatte zur Laufzeit auf HD swappen Allgemeine Java-Themen 7
S Problem mit Hashmap Allgemeine Java-Themen 2
G Datei einlesen und in HashMap verarbeiten Allgemeine Java-Themen 3
E Auslesen aus Hashmap Allgemeine Java-Themen 3
P HashMap mit mehreren gleichen keys Allgemeine Java-Themen 4
alexpetri hashmap bästpractice Allgemeine Java-Themen 4
J HashMap mit Webservice realisierbar? Allgemeine Java-Themen 4
ARadauer hashmap vs hastable Allgemeine Java-Themen 5
T HashMap#values Reihenfolge Allgemeine Java-Themen 13
M ArrayList sortieren - HashMap mit sort_id vorhanden Allgemeine Java-Themen 2
L Wie kann ich eine HashMap abspeichern? Allgemeine Java-Themen 3
T HashMap (String, Object(String , int)) nach int sortieren Allgemeine Java-Themen 7
M HashMap kapselt zwei Objekte aber wie baut man eine Matrix? Allgemeine Java-Themen 2
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
P List in Hashmap schreiben Allgemeine Java-Themen 5
M Threads in einer Hashmap Allgemeine Java-Themen 5
P HashMap an 2 Stellen veränderbar Allgemeine Java-Themen 13
P HashMap auflösen Allgemeine Java-Themen 9
MQue HashMap durchlaufen Allgemeine Java-Themen 2
MQue HashMap Allgemeine Java-Themen 2
M HashMap kommt beim Löschen aus dem Tritt Allgemeine Java-Themen 6
MQue HashMap Allgemeine Java-Themen 6
MQue HashMap Allgemeine Java-Themen 9
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
B HashMap.containsKey. Allgemeine Java-Themen 10
J byte-Array in Hashmap speichern? Allgemeine Java-Themen 3
S Klasse in HashMap speichern Allgemeine Java-Themen 3
G [quote]the type HashMap is not generic; it cannot be paramet Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben