Cache ist ein einzigartiges Tier, je nachdem, wie Sie es verwenden, dann könnte es als No-SQL-Datenbank beschrieben, ein RDBMS, oder ein Objekt orientierte Datenbank. Natürlich ist es nicht alles für alle Menschen, also muss man wissen, auf welche Art und Weise es ist.
Es ist alles auf einer vor-relationalen prozeduralen Sprache namens MUMPS (schreckliche Marketing-Namen, die schrecklich für Googeln ist auch, so dass sie jetzt nur Cache, die nur schrecklich für Googeln ist) gebaut. Diese Sprache enthält Operationen zum persistenten Speichern von Daten als native Befehle, sodass die Persistenz-Engine optimiert werden kann, ohne den Anwendungscode zu beeinträchtigen.
Diese Sprache hat einen Sammlertyp, ein Schlüssel/Wert-Verzeichnis mit 0 oder mehr sortierten Schlüsseln und einen Datentyp, der Operatoren für sehnige Dinge und andere für zahlreiche Dinge hat. Alle Schlüssel und Werte sind Instanzen dieses Datentyps.
Dies ist eine lange Zeit gewesen, und Anwendungen, die Jahrzehnte alt darüber geschrieben sind, laufen immer noch.
Diese Sprache ist älter als das erste RDBMS, aber spätere Implementierer der Sprache haben RDBMS-Unterstützung hinzugefügt. Cache kompiliert SQL (statisch oder dynamisch) in eine modernere Version von MUMPS, die dann die Speicher-Engine steuert. Wenn das komisch klingt, ist es nicht wirklich - jedes RDBMS kompiliert oder interpretiert SQL in Richtungen für seine Speicher-Engine.
Cache hat sich zu einer objektorientierten Sprache entwickelt (wie viele andere Sprachen im Laufe der Zeit), was bedeutet, dass es jetzt 2 Datentypen gibt, die ursprüngliche und den Objekttyp. Objekte können nicht direkt als Schlüssel oder Werte auf der Festplatte gespeichert werden, sondern können Persistenzmethoden erben oder implementieren.
So können Benutzer, die Cache verwenden, objektorientierten Code, SQL oder prozeduralen Code verwenden oder sie kombinieren, wie sie möchten.
Was sind die Vor- und Nachteile?
Für Leute, die Legacy-MUMPS-Anwendungen ausführen, haben sie ziemlich keine Wahl, also werde ich mich auf alle anderen konzentrieren.
Ein großer Nachteil ist, dass es einen kleinen Marktanteil hat (verglichen mit anderen RDBMS, obwohl es mit anderen Produkten verglichen werden könnte) und im selben Preis wie ein kommerzielles RDBMS (obwohl es wahrscheinlich viel einfacher ist) ein individuelles Angebot für einen bestimmten besonderen Gebrauch davon ausarbeiten), also muss es einen zwingenden Grund geben, es zu kaufen.
Auch der kleine Marktanteil bedeutet einen kleineren Markt für Entwickler. Aufgrund der unterschiedlichen Verwendungsmöglichkeiten sind nicht alle Cache-Entwickler für alle Projekte geeignet - jemand, der in den letzten 20 Jahren eine ältere Anwendung (von vor der strukturierten Programmierung) beibehalten hat, ist möglicherweise nicht sehr gut in der Lage, Cache für objektorientiertes Web zu verwenden Anwendungen.
Ein weiteres Problem ist, dass es so ziemlich keine Code-Bibliotheken außerhalb dessen gibt, was Intersystems (der Hersteller) liefert, und diese können unmöglich mit etwas wie .NET oder Java in der Größe konkurrieren.
Ein großer Vorteil ist, dass Cache-Objekt-Skript (moderne MUMPS-Sprache) viel mehr Sprache als Sie normalerweise in einer Datenbank erhalten. Dies ist von Vorteil, je mehr Geschäftslogik Sie in der Datenbank haben.
Eigentlich IMHO die meisten Vorteile von Cache kommen, wenn Sie es für Ihre Geschäftslogik verwenden. Die Kombination aus Datenbank und Geschäftslogik ist viel einfacher, leichter zu erreichen und führt nicht besonders zu langfristigen Wartungsproblemen, wenn die Umgebung dies unterstützt. Der Nachteil der Kombination von Datenbank und Geschäftslogik im Cache ist, dass die Portierung sehr schwierig sein wird und Ihre Geschäftslogik in der Regel in einer freien Sprache geschrieben ist und Sie keine Lizenz benötigen, um sie auszuführen. Hier befinden Sie sich im selben Boot, als wäre Ihre Geschäftslogik in TSQL, außer dass es noch schwieriger zu portieren ist.
Wenn Sie O.K. Aber viele Dinge sind schön. Kein ORM - kommerziell oder handkodiert. Das SQL ist in Code kompiliert, den Sie betrachten können (es wird so generiert, dass es auf Geschwindigkeit gegenüber Lesbarkeit optimiert ist und die Variablennamen können Dinge wie "T32" sein, aber es ist immer noch lesbar, wenn Sie müssen), sogar einen Schritt- oder Haltepunkt. Die Kosten für das Schreiben von SQL-Cursorn sind sehr niedrig. Sie können tatsächlich objektorientierten Code schreiben. Es wird interpretiert, daher ist es einfacher, sich schnell zu entwickeln. Wenn Sie Geschwindigkeit wollen, können Sie Transaktionen deaktivieren und keine SQL gehen.
Ich habe es auch sehr einfach zu verwalten gefunden. In den meisten meiner Erfahrungen gibt es keinen DBA - Sie brauchen einfach keinen.
Ich bin mit dem letzten Kommentar nicht einverstanden, dass es keinen DBA gibt. Es wird normalerweise nur in die Rolle des Programmierteams subsumiert, das die allgemeinen DBA-Aufgaben erledigen muss. Innerhalb meiner Firma ist die DBA-Rolle im Wesentlichen aufgeteilt zwischen 3 Personen 1 Programme DB Änderungen, 1 implementiert diese Änderungen ein anderes pflegt Backup und Leistungsanpassungen. Da es nur wenige Leistungstools gibt, mussten wir Intersystems mehrmals für die DBA-Optimierungsaufgaben einstellen. Der Hauptnachteil ist, dass Cache-Programmierer selten sind und somit die Produktwartungskosten in dieser Hinsicht steigen. – Andrew
@Andrew - Ich kann nur nach dem gehen, was ich erlebt oder gehört habe, und vielleicht ist das atypisch. Ich hatte noch nie so viel Arbeit, wie Sie bei Deployment, Backup und Performance-Anpassungen beschreiben. Aber ich stimme zu, dass es nur wenige Leistungswerkzeuge gibt und Programmierer selten sind. – psr
Nun in gewisser Weise würde ich das gleiche über MySQL, MS SQL usw. sagen. Ich kenne viele Organisationen, die eine oder mehrere dieser Datenbanken ohne DBA laufen haben. Sie neigen dazu, die "Notwendigkeit" für einen DBA zu finden, basierend auf der Größe der Daten, an denen Sie arbeiten, der Häufigkeit der Aktualisierungen und ihrer relativen (und vielleicht noch wichtiger wahrgenommenen) Bedeutung für Ihr Unternehmen. Wir haben eine Cache-Datenbank und 2 Personen führen DBA-Aufgaben aus. Wir haben viele MySQL-Datenbanken, die nach dem Setup 0 DBA-Beteiligung hatten. – Andrew