mmofacts.com

Abhängigkeiten/Vorraussetzungen

gepostet vor 14 Jahre, 9 Monate von BlackScorp

Hi leute ich sitzte aktuell an einem kleinen Problem. Ich möchte Forschungen/Gebaude/Einheiten von einander abhängig machen.

Beispiel:

Einheit a kann nur gebaut werden wenn Gebaude a, Gebaude b und Forschung a Stufe x hat.

Genau das Selbe gilt auch für Gebaude und Forschungen. Nur dass Gebaude und Forschungen nicht von Einheiten abhängig sind. Also Gebaude a kann nur gebaut werden , wenn es von den Einheiten a,b xxx exestieren. Sowas soll nicht geschehen

Aktuell habe ich 3 Tabellen zur Definition von EInheiten,Gebaude und Forschungen

Die Tabellen haben Folgende spalte:

builds:

id | name | description | prevew_picture | build_picture | max_level | position | reserved_slots

units:

id | name | description | prevew_picture | map_picture | base_attack | base_defence | base_movement | base_hitpoints | base_capacity

researches

id| name | description | prevew_picture | max_level

und nun brauche ich ja eine tabelle um alle diese tabellen mit 1 zu N zu kombinieren. habe an sowas gedacht:

dependences

id | who | when | what | level

also quasi wer , benötigt wann , was und im welchen level. aber das ist aktuell nur ein grundgedanke.

eventuell könnt ihr mir tipps geben wie ich das eigentlich realisieren muss, kann ja sein dass ich irgendwas vergessen habe oder an irgendwas nicht gedacht habe

mein Problem ist noch dass ich nicht weis ob es möglich ist ein ODER fremschlüssel im ERD zu erstellen. also für who und what soll kein fester primärschlüssel sein

MFG

gepostet vor 14 Jahre, 9 Monate von buhrmi

wenn du es mit einer einzigen dependencies tabelle machen willst, dann bräuchte diese mehrere felder

id
building_id
unit_id
research_id
required_building_id
required_research_id
required_level

wobei manche dieser felder einfach auf null bleiben je nachdem für welchen objekttyp die dependency gilt.

gepostet vor 14 Jahre, 9 Monate von BlackScorp

hm.. ich habe gerade mal so überlegt, das wäre doch ziemlich schlimm für die datenbank, denn es muss jedes gebaude, jede forschung und bei jedem level eingetragen werden. und bei jedem bau wird das überprüft. ich denke das wäre nciht besonders klug oder? wie regelt ihr denn die kosten,verbrauch,abhängigkeit usw. über datenbank?

PS: hier mal  ein kleiner ERD um sich das ganze mal bildlich vorzustellen:

http://cccpmik.wmw.cc/dependeces.png

gepostet vor 14 Jahre, 9 Monate von MrMaxx

Solch ein Abhängigkeitsbaum sollte doch nicht allzu groß sein oder? Warum cached du dir den nicht einfach? Programmiersprachen ohne Applicationscope (oder ähnliches) machen sowas z.B. in memcachd oder so...

Maxx

gepostet vor 14 Jahre, 9 Monate von buhrmi

Wieviele Millionen vordefinierter gebäude hast du denn :O Von der DB performance her ist das jedenfalls ein witz. Vergess deine Indizes nicht.

gepostet vor 14 Jahre, 9 Monate von D4rk5in

Also ich hab das nicht über die Datenbank geregelt. Das zieht bei mir zu stark an der Performance.

Da wo ich die Voraussetzungen brauch, inkludiere ich eine Funktion, die die Voraussetzungen enthält.

MfG

gepostet vor 14 Jahre, 9 Monate von BlackScorp

Original von D4rk5in

Also ich hab das nicht über die Datenbank geregelt. Das zieht bei mir zu stark an der Performance.

Da wo ich die Voraussetzungen brauch, inkludiere ich eine Funktion, die die Voraussetzungen enthält.

MfG

daran habe ich auch schon gedacht jedoch möchte ich halt dass man die beziehungen über das admin interface mit drag und drop generieren kann ohne dabei den quellcode anzufassen. also quasi ich habe links ein pannel mit gebauden/einheiten/forschungen

ich ziehe ein gebaude in die mitte rein, und eine forschung und dann verbinde ich die beiden mit drag und drop und lege das level fest. dann abspeichern und fertig. ich könnte ja beim abspeichern ein array mit den abhängigkeiten generieren und das in eine funktion reinschreiben, jedoch wenn ich es überarbeiten will, wird das ganze komplizierter ohne den quellcode zu ändern

gepostet vor 14 Jahre, 9 Monate von buhrmi

Original von MrMaxx

 memcachd

is klar!

..... speicher es in der datenbank. da gehört es hin.

gepostet vor 14 Jahre, 9 Monate von Drezil

ich hab bei mir bigints, die als bitmap die vorraussetzungen enthalten (achtung! php kann keine int64! alles muss in der db ablaufen). Ich hab so 300+ forschungen und 50+ gebs.

select * from gebaeude/forschung/foo f, erforscht er where er.uid = $uid and f.bitmap1 & er.bitmap1 = f.bitmap1 and f.bitmap2 & er.bitmap2 = f.bitmap2 and ....

ist imo die ressourcensparendste lösung, wenn man mit vielen forschungen arbeitet.

gepostet vor 14 Jahre, 9 Monate von tector

Original von Drezil

select * from gebaeude/forschung/foo f, erforscht er where er.uid = $uid and f.bitmap1 & er.bitmap1 = f.bitmap1 and f.bitmap2 & er.bitmap2 = f.bitmap2 and ....

 Wäre nett wenn du dir die Mühe machen würdest gängige SQl-Syntax-Konventionen zu benutzen - es liest sich für uns und den Thread-Ersteller dann einfacher..

Abgesehen davon würde mich deine Bitmap-Variante zu sehr verwirren, Performance hin oder her... man kanns auch übertreiben..

Bei mir haben Gebäude, Forschungen und Raumschiffe die gleichen Eigenschaften und stehen in der selben Tabelle unter dem Begriff 'Technologien'. Das mag jetzt vielleicht komisch klingen und ist sicher auch bei den meisten anderen BG-Spielen so nicht zu empfehlen, aber ich habe da schon meine Gründe für ;)

Jedenfalls habe ich dann noch eine Tabelle für die Voraussetzungen die ungefähr so aussieht:

Voraussetzungen( Technologie1(FK), Technologie2(FK), Stufe)

(Also Technologie 1 setzt Technologie 2 auf Stufe x voraus. Typische n:m-Beziehung halt.)

(FK = Foreign Key = Fremdschlüssel)

gepostet vor 14 Jahre, 9 Monate von buhrmi

Bin der selben Meinung wie tector. Wenn man die Technologien in unterschiedlichen Tabellen hat muss man in seiner n:m Tabelle wie oben genannt eben mehrere FKs speichern während die anderen null sind.

gepostet vor 14 Jahre, 9 Monate von TheUndeadable

Ich persönlich würde in diesem Fall Code-Generatoren bevorzugen.

Das Admin-Interface kann einen Vorgang anstoßen, bei dem die Informationen aus der Datenbank (bei mir Xml-Dateien) gelesen werden und daraus dann in deinem Falle PHP-Code erzeugt wird. Dieser PHP-Code enthält dann eine Funktion im Stile von:

GetRequiredResearchesForLevel ( $building, $level ); [Oder ähnliches in der Art]

Damit hätte man zwei Fliegen mit einer Klasse geschlagen:

a) Flexible Verwaltung
b) Schnelle Ausführung

Abgesehen davon: Code-Generatoren rocken!

gepostet vor 14 Jahre, 9 Monate von knalli

Selbstgenerierender Code, der sich dann auch noch ausführt? Uiui..

Zwei Ideen von meiner Seite aus: 

  • DBMS nutzen, welches Rekursionen unterstützt (fallen mir spontan nur Oracle oder DB2 ein) - aber hey, du hast gefragt "wie" *g*
  • eine entsprechende Tabelle nutzen.. die Komplexität und durchaus vorhandene Performanzbeeinträchtigung könnte man durch ein Caching wett machen. wahlweise als XML, YAML, JSON, serialisiert (PHP) gespeichert. Hauptsache irgendwie definiert.
gepostet vor 14 Jahre, 9 Monate von DrakeL

Original von buhrmi

Bin der selben Meinung wie tector. Wenn man die Technologien in unterschiedlichen Tabellen hat muss man in seiner n:m Tabelle wie oben genannt eben mehrere FKs speichern während die anderen null sind.

Eine Spalte "typ" vielleicht als Enum würde es auch tun. Bei 3 verschiedenen Arten macht es nicht viel aus, aber wenn es mal mehr werden hat man weniger Spalten die eh immer leer wären.

gepostet vor 14 Jahre, 9 Monate von buhrmi

dann haste aber id kollisionen

edit: ok macht nix, die müssen ja nicht unique sein in diesem fall.

gepostet vor 14 Jahre, 9 Monate von BlackScorp

Original von DrakeL

Eine Spalte "typ" vielleicht als Enum würde es auch tun. Bei 3 verschiedenen Arten macht es nicht viel aus, aber wenn es mal mehr werden hat man weniger Spalten die eh immer leer wären.

ja ich habe mir jetzt vorgenommes es so zu gestalten:

Tabelle: dependences

ID | typ_id | object_id | level | requer_typ | requer_id | level

im ERD habe ich grafisch nichts verbunden also kein fremdschlüssel oder sonstiges die daten werden dann direkt per script eingefügt. Diese Tabelle soll NUR für das Admininterface dienen.

Also daten aus db Holen grafische oberfläche darstellen über die oberfläche beziehung darstellen beim abspeichern die beziehungen in db speichern und ein großes array abspeichern in einer funktion.php. für das editieren werden werte aus db geladen und beim abspeichern die alte werte direkt übschrieben. somit habe ich nur als administrator ein zugriff auf diese tabelle. danke für eure tipps, wiedermal habt ihr mir weitergeholfen

MFG

gepostet vor 14 Jahre, 9 Monate von tector

Warum diese Tabelle nur im Admin-Interface benutzen? Musst du im Spiel nicht auch die Abhängigkeiten abfragen wenn du z.B. wissen willst ob ein Spieler schon ein Gebäude bauen darf oder nicht?

Original von knalli

  • DBMS nutzen, welches Rekursionen unterstützt (fallen mir spontan nur Oracle oder DB2 ein) - aber hey, du hast gefragt "wie" *g*

Also ich nutze Rekursion mit MySql schon lange. Meistens werden von Programmierern aber aus Performance-Gründen "Nested Sets" benutzt...

gepostet vor 14 Jahre, 9 Monate von knalli

Kann MySQL neuerdings doch CONNECT BY / RECURSIVE? Die Tatsache wäre mir dann in den letzten 4 Monaten aber unpassend unter die Räder gekommen?? Soweit ich das sehe, kann man "nur" NestedSets machen, und nun ja, das ist nur eine Abfrageformulierung/schema. Ein Design Pattern, wenn man so will.

@BlackScorp Nicht vergessen, einen soliden und definierten Standardwert wählen (bspw. 0?). Vor allem, wenn die importierten Schlüssel nichtmal eingetragen werden (d.h. nur indirekt vorhanden sind).

gepostet vor 14 Jahre, 9 Monate von BlackScorp

Original von knalli

@BlackScorp Nicht vergessen, einen soliden und definierten Standardwert wählen (bspw. 0?). Vor allem, wenn die importierten Schlüssel nichtmal eingetragen werden (d.h. nur indirekt vorhanden sind).

desswegen habe ich ja auch den typ. dadurch sollte eigentlich keine doppelten einträge vorhanden sein. ich werde mal nachher mal hier das gesammte ERD Posten. vllt fällt euch da was auf , was man nicht machen sollte

Original von tector

Warum diese Tabelle nur im Admin-Interface benutzen? Musst du im Spiel nicht auch die Abhängigkeiten abfragen wenn du z.B. wissen willst ob ein Spieler schon ein Gebäude bauen darf oder nicht?

ich muss das zwar im spiel prüfen, jedoch denke ich dass es dann resourcensparender ist, wenn ich ein bestimmten wert aus einem array raushole anstatt aus einer datenbank

MFG

gepostet vor 14 Jahre, 9 Monate von tector

Da ich mich weitesgehend an den ANSI SQL Standard halte kenne ich 'CONNECT BY' / 'RECURSIVE' nicht. (Ich benutze nichtmal die Autoincrement-Funktion von MySql ;) ). Also nach etwas Recherche hab ich herausgefunden dass CONNECT BY wohl eine Oracle-Erweiterung ist dich nicht ANSI SQl Standard ist... In MySql gibt es so etwas nicht, aber man kann (wie ich denke in fast jedem RDBMS) ohne Probleme hierharchische Tabellen erstellen indem man eine Fremdschlüsselspalte auf den Primärschlüssel verweist.

Bsp.:

roles( id(PK), role, parent_id(FK),...)

mehr Infos:

http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

EDIT:

Original von BlackScorp

ich muss das zwar im spiel prüfen, jedoch denke ich dass es dann resourcensparender ist, wenn ich ein bestimmten wert aus einem array raushole anstatt aus einer datenbank

Versteh ich jetzt nicht ganz, aber ich denke du meinst wohl dass du die DB nur 1x abfragen willst und dann das Ergebnis cached. Es würde imho keinen Sinn machen die Daten redundant in der DB und in einem Array zu speichern. Und das Array steht dann ja auch in einer Datei und eine Datei abzufragen ist denk ich auch nicht schneller als die DB zumal du in der DB noch optimierte Suchfunktionen etc. hast. Jedenfalls wenn du das Caching meinst musst du die DB ja trotzdem 1x abfragen - dafür kannst du doch die Tabelle nehmen, oder steh ich jetzt auf dem Schlauch... ?

gepostet vor 14 Jahre, 9 Monate von BlackScorp

so: hier ist mein ERD: http://cccpmik.wmw.cc/bsp.mwb

hier sind einige Hintergrund informationen:

Allgemein: 2 Rassen, welche in irgendeiner weise mit einander aggieren

Spielwelt: Ein Universum mit mehreren Galaxien, die wiederum mehrere sonnensysteme besitzten und jedes sonnensystem hat merhere planeten und auf jeden planeten kann man städte bauen. In jeder stadt sollen gebaude gebaut werden auf bestimmte positionen. Die anzahl an bauplätzen ist begrenzt damit man eine stadt spezialisiert(zb nur für rohstoffe oder einheiten oder forschungen etc). Jeder Planet ist unterschiedlich groß also hat es unterchiedliche tick zeiten. D.H wenn ein planet klein ist , kann man schneller rohstoffe abbauen als auf einem großen planeten(da ja kleinere Planeten sich schneller um die eigene achse drehen und somit vergehen die tage schneller).Je nach größe des Planeten hat auch der Planet eine begrenzte anzahl an rohstoff kapazität, auf kleinen planeten kann man schnell abbauen jedoch nicht viel, wenn auf einem planeten mehrere spieler zu viel abbauen und der Planet schafft es nicht sich zu regenerieren, zerstört es sich und alle städte des spieler auf dem planeten gehen verloren.somit hätte man die möglichkeit ganze allianzen die sich auf einem planeten befinden enorm zu reduzieren:D

Rohstoffe: es gibt 1 Hauptrohstoff für jede rasse, welches mit einer art bohrmachine abgebaut werden soll, dazu soll es eine art fabriken, welche veredelungsrohstoffe erstellen. Diese veredelungsrohstoffe werden mit dem hauptrohstoff kombiniert um ein gebrauchsrohstoff zu erhalten. es gibt 3 unterschiedliche gebrauchsrohstoffe, nahrung, forschung, bau/einhetein.

die gebrauchsrohstoffe haben unterschiedlichen level je nach dem was man kombiniert. zb:

1 hauptrohstoff + 2 veredelungsrohstoffe = 1 gebrauchrohstoff stufe 1

1 hauptrohstoff der rasse x + 1 hauptrohstoff der rasse y = 1 gebbrauchsrohstoff sutfe 2

1 hauptrohstoff + 1 premium rohstoff = 1 gebruachsrohstoff sutfe 3

1 gebrauchrohstoff stufe 1 kann zb nur 0,25 einheiten ernhähren oder 25%ige chance auf eine erfolgreiche forschung oder gebaude

stufe 2 mach dann 50% und stufe 3 macht 80%. damit ist mehr spannung im spiel drin denn man weis nie davor ob ein gebaude erbaut wird oder nicht oder eine forschung fertiggestellt wird oder nicht.

die xy positionen der galaxien und sonnensystem und der planeten sind eigentlich nur die x,y positionen der div bilder in der darstellung.

das sind erstmal die grundüberlegungen meines spiels. hoffe jemand findet die zeit, mein ERD sich mal anzuschauen und dann mal zu sagen was nicht in ordnung wäre und was man besser machen könnte

MFG

gepostet vor 14 Jahre, 9 Monate von BlackScorp

Original von tector

Versteh ich jetzt nicht ganz, aber ich denke du meinst wohl dass du die DB nur 1x abfragen willst und dann das Ergebnis cached. Es würde imho keinen Sinn machen die Daten redundant in der DB und in einem Array zu speichern. Und das Array steht dann ja auch in einer Datei und eine Datei abzufragen ist denk ich auch nicht schneller als die DB zumal du in der DB noch optimierte Suchfunktionen etc. hast. Jedenfalls wenn du das Caching meinst musst du die DB ja trotzdem 1x abfragen - dafür kannst du doch die Tabelle nehmen, oder steh ich jetzt auf dem Schlauch... ?

die db ist nur für die visuelle darstellung im acp damit der admin nicht im quellcode rumpfuschen muss. die db wird nur abgefragt wenn der admin eine visuelle oberfläche haben will die eigentliche überprüfung findet in einem array statt habe da an sowas gedacht:

$gebaude["xy"] = array(

0 => array("gebaudex","levelx"),

1 =>array("forschungx","levelx")

MFG

gepostet vor 14 Jahre, 9 Monate von knalli

Original von tector

Da ich mich weitesgehend an den ANSI SQL Standard halte kenne ich 'CONNECT BY' / 'RECURSIVE' nicht. (Ich benutze nichtmal die Autoincrement-Funktion von MySql ;) ). Also nach etwas Recherche hab ich herausgefunden dass CONNECT BY wohl eine Oracle-Erweiterung ist dich nicht ANSI SQl Standard ist... In MySql gibt es so etwas nicht, aber man kann (wie ich denke in fast jedem RDBMS) ohne Probleme hierharchische Tabellen erstellen indem man eine Fremdschlüsselspalte auf den Primärschlüssel verweist.

Bsp.:

roles( id(PK), role, parent_id(FK),...)

mehr Infos:

http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

CONNECT BY ist eine Eigenentwicklung von Oracle, (WITH) RECURSIVE ist Bestandteil von mindestens SQL99 und wurde mittlerweile von DB2 (IBM) implementiert. RECURSIVE *ist* also Standard ;) Soweit ich weiß, aber nicht vollständig bisher implementiert ?

Selbstverständlich weist man auch dort einer Spalte eine rekursiven Fremdschlüssel auf sich selbst zu (s.o.), die Frage ist eben nur, wie man die Abfrage einfach und effizient stellen kann.

EDIT:

Original von BlackScorp

ich muss das zwar im spiel prüfen, jedoch denke ich dass es dann resourcensparender ist, wenn ich ein bestimmten wert aus einem array raushole anstatt aus einer datenbank

Versteh ich jetzt nicht ganz, aber ich denke du meinst wohl dass du die DB nur 1x abfragen willst und dann das Ergebnis cached. Es würde imho keinen Sinn machen die Daten redundant in der DB und in einem Array zu speichern. Und das Array steht dann ja auch in einer Datei und eine Datei abzufragen ist denk ich auch nicht schneller als die DB zumal du in der DB noch optimierte Suchfunktionen etc. hast. Jedenfalls wenn du das Caching meinst musst du die DB ja trotzdem 1x abfragen - dafür kannst du doch die Tabelle nehmen, oder steh ich jetzt auf dem Schlauch... ?

Scheinbar ist dir das Abfragevolumen nicht bewusst? Klar, wenn wir hier nur von ein paar Dutzend Einträgen reden, dann ist die ganze Diskussion absurd, aber bei wesentlich mehr Daten sollte man sich durchaus einen geeigneten Cache überlegen. Die (rekursive) Abfrage bzw. das Joinen von Tabellen mit sehr vielen Daten ist nicht unbegrenzt schnell. Und falls dies prinzipiell nur für eine Konfiguration notwendig ist (und dann noch bei einem Browsergame), ist ein Cache durchaus eine Option.

@BlackScorp Was ist das für ein Format des ERDs? Vllt. bitte mal zusätzlich als Bild? :)

gepostet vor 14 Jahre, 9 Monate von BlackScorp

Original von knalli

Scheinbar ist dir das Abfragevolumen nicht bewusst? Klar, wenn wir hier nur von ein paar Dutzend Einträgen reden, dann ist die ganze Diskussion absurd, aber bei wesentlich mehr Daten sollte man sich durchaus einen geeigneten Cache überlegen. Die (rekursive) Abfrage bzw. das Joinen von Tabellen mit sehr vielen Daten ist nicht unbegrenzt schnell. Und falls dies prinzipiell nur für eine Konfiguration notwendig ist (und dann noch bei einem Browsergame), ist ein Cache durchaus eine Option.

hm.. ich habe mich noch nie mit Caching befasst, ich denke aber dass ich erstmal das grundsystem programmieren muss und danach das Caching implementieren

Original von knalli

@BlackScorp Was ist das für ein Format des ERDs? Vllt. bitte mal zusätzlich als Bild? :)

Das ERD habe ich mit MYSQL Workbench erstellt. Problem ist, dass es als bild sehr unübersichlich ist, in dem MYSQL Workbench geht man mit der maus über eine tabelle und schon sieht man farblich welche tabelle wozu gehört. ich werde mal versuchen diese tabelle als bild und übersichtlich zu gestalten. eventeull kannste ja schon mal es mit workbench öffnen

MFG

EDIT:http://cccpmik.wmw.cc/bsp_ERD.png das erd habe ich neu hochgeladen damit es genauso wie das bild aussieht

gepostet vor 14 Jahre, 9 Monate von MrMaxx

Original von buhrmi

Original von MrMaxx

 memcachd

is klar!

..... speicher es in der datenbank. da gehört es hin.

Ich hab keine Ahnung, wie gut memcached ist, aber es eine Möglichkeit über den Sessionscope hinaus Daten im Speicher zu halten. Das war mehr ein Tip an die PHP-Benutzer.

Desweiteren hab ich mit keiner Silbe gesagt, das er den eigentlichen Baum nicht in der Datenbank ablegen sollte. Nur ist soein Abhängigkeitsbaum ein idealer Cachingkandidat. Nicht besonders gross, wird nie geändert und wird ständig gebraucht.

So long...

Maxx

gepostet vor 14 Jahre, 9 Monate von knalli

Das erste Zitat war eigentlich auch nicht an dich gerichtet, BlackScorp :) 

Danke an den Hinweis, die Workbench hatte ich nicht (mehr) drauf, und die Dateiendung sagte mir mal gar nix. Sieht doch gut aus.

gepostet vor 14 Jahre, 9 Monate von BlackScorp

ich habe memcache mir mal angeschaut. so wie ich es verstanden habe, kann ich damit daten abspeichern wie cookies/sessions nur das die daten unabhängig vom benutzer exestieren? also ich erstelle quasi ein cookie auf dem webserver? habe ich das richtig verstanden?

Sieht doch gut aus.

und da gibts echt nichts zu meckern?

gepostet vor 14 Jahre, 9 Monate von TheUndeadable

> also ich erstelle quasi ein cookie auf dem webserver? habe ich das richtig verstanden?

Exakt...

Dies nennt sich Application-Scope...

gepostet vor 14 Jahre, 9 Monate von FlashingPumpkin

Code:

from django.db import models
class Forschung(models.Model):
    name = models.CharField(max_length = 255)
    ermoeglicht = models.ManyToManyField('self',related_name = 'ermoeglicht_von')
    schliesst_aus = models.ManyToManyField('self',related_name = 'ausgeschlossen_von')

Gibts ne möglichkeit hier python syntax hl einzubinden?

Ich hab keine Ahnung, wie gut memcached ist, aber es eine Möglichkeit über den Sessionscope hinaus Daten im Speicher zu halten.

Memcached is ziemlich stark und schnell. Facebook gehört inzwischen zu den main contributors und nutzt extensiv memcached.

ich habe memcache mir mal angeschaut. so wie ich es verstanden habe, kann ich damit daten abspeichern wie cookies/sessions nur das die daten unabhängig vom benutzer exestieren? also ich erstelle quasi ein cookie auf dem webserver? habe ich das richtig verstanden?

Wie der name andeutet, memcached packt alles was du dem service fütterst ins ram und hält es dort bis es invalidiert wird. -> Sehr schneller lookup im gegensatz zu DB-reads. Vorsicht jedoch wenn du daten in der db ablegst - die memcached kopie muss invalidiert / aktualisiert wieder um die änderungen zu spiegeln. 

cheers

gepostet vor 14 Jahre, 9 Monate von Dunedan

\o/ Django. :D

Auf diese Diskussion antworten