Frage

Ich denke nur, dass jetzt es ist häufig genug RAM auf Ihrem Datenbankserver, um Ihre komplette Datenbank zwischenzuspeichern , warum sind der Spezialist in Memory-Datenbank (zB TimesTen finden Sie auch Wikipedia ), die alle waren die ein paar Jahre vor Wut nicht verwendet mehr?

Es scheint, als Zeit weitergehen, kein Disk-basierte Datenbanken werden weniger, beispiel der meisten Anwendungen werden jetzt gebaut auf herkömmliche rationalen Datenbanken zu sein, dass. Ich würde das Gegenteil als RAM erwartet wird immer nah an für eine Vielzahl von Servern frei zu sein.

Ich frage das, wie ich auf der Stack-Überlauf-Architektur lesen, gerade und die Seite sagt

  

Dies ist bedeutsam, weil Stapel   Überlauf der Datenbank ist fast   vollständig im RAM und das schließt sich noch   genau zu hohen Kosten.

Aber ich glaube nicht, das ein Problem wäre, wenn „Zeiger“ und „Sammlungen“ statt dem normalen btree verwendet wurden. Btree ist ein sehr klug runde Grenzen Plattenzugriffsgeschwindigkeit zu erhalten, beispiels sie CPU useage Handel Plattennutzung zu reduzieren. Aber jetzt sind wir so Spiel ram haben.

Aber wir noch Datenbank benötigen, wie tun Sie Ihre eigenen

  • Locking
  • Deadlock Erkennung
  • Transaktionsprotokollierung
  • Wiederherstellen
  • Etc

ist sehr hart.

@ S.Lott, Da wir alle verbringen so lange Indizes Auswahl, die Vermeidung schließt sich und die Datenbank-Performance-Probleme zu untersuchen. Es muss einen besseren Weg geben. Vor ein paar Jahren wir die „In-Memory-Datenbank“ wurde gesagt, war der bessere Weg. Also, bevor ich springe in ein usw. verwenden, ich möchte wissen, warum andere Menschen sind mit ihnen nicht mehr.

(ich bin unwahrscheinlich TimesTen mich zu verwenden, da es hoch (preist Alternative zum TimesTen In-Memory-Datenbank

  • Hat jemand veröffentlichte einen detaillierten Vergleich zwischen verschiedener in-Memory-RDBMS ?
  • Update:

    Ich habe diese Frage ein LONG Zeit vor, in diesen Tagen Microsoft SQL Server haben " In-Memory OLTP ", die ein speicheroptimierte Datenbank-Engine in den SQL Server-Modul integriert ist. Es ist nicht billig, aber es scheint zu sein, sehr schnell für einige Workloads.

    War es hilfreich?

    Lösung

    Wahrscheinlich gibt es einfach keine reifen Produkte von Speicherdatenbanken, die als vollwertiger Ersatz für eine klassische Datenbank verwendet werden könnten.

    ist relationale Datenbank ein sehr altes Konzept. Obwohl es viele Ansätze waren, um voranzukommen und neue Technologien zu entwickeln, z. B. objektorientierte Datenbanken, die relationalen Datenbanken haben ihre Konzepte nicht wirklich ändern. Dinge nicht erwarten, zu schnell zu ändern, da Datenbanken nicht viel in den letzten zehn oder fünfzehn Jahren ändern oder sogar länger.

    denke ich, die Entwicklung von Technologien ist nicht so schnell, wie man glauben könnte. Es dauert Jahrzehnte für neue Konzepte ausgereift und etabliert werden. Vor allem in Datenbanktechnologien, wo Reife sonst viel wichtiger als alles andere ist.

    In zehn oder zwanzig Jahren, Datenbanken sind wahrscheinlich nicht mehr dasselbe, wie sie heute sind. Wenn In-Memory-Datenbanken sind die Zukunft - niemand dies heute sagen kann, -. Sie brauchen etwas mehr Zeit, nur zu entwickeln

    Andere Tipps

    Niemand antwortete wirklich die Frage: „Wann soll ich mit einem In-Memory-Datenbank und was ist das Problem zu achten?“ so werde ich es versuchen.

    Sie sollten eine In-Memory-Datenbank betrachten, wenn   1. Das Zielsystem hat Daten zu verwalten, aber keine persistenten Medien   2. Die Leistungsanforderung kann einfach nicht mit einer persistenten Datenbank

    erfüllt werden

    # 1, denken Sie an das TV Guide in Ihrer Set-Top-Box (STB). Low-End-STB (das heißt diejenigen, die keine DVR-Fähigkeit) keine dauerhafte Speicherung und benötigen keine dauerhafte Speicherung. Aber die Datenbank für einen 400-Kanal, 14-Tage-TV Guide ist nicht trivial. Es gibt eine Leistungsanforderung auch hier, da die Daten aus dem Karussell Transponder kommt mit hoher Geschwindigkeit und es ist ein Fall von ‚capture es oder warten, bis sich das Karussell um wieder kommt.‘ Aber es gibt keine Notwendigkeit für die Persistenz. Wir haben alle gesehen; wenn Sie Macht bei Ihnen zu Hause verlieren, wenn es wieder auf dem TV Guide kommt, sagt „wird in Kürze verfügbar sein“, weil es sich Kopfende von dem Transponder oder Kabel Provisioning wird. Netzwerk-Router die gleichen Eigenschaften teilen. Keine persistenten Speicher, muß schnell sein, und die Datenbank kann von einer externen Quelle (Peer-Router im Netzwerk, in diesem Fall die Routing-Tabelle neu zu besiedeln) bereitgestellt werden

    Es gibt unendlich viele Beispiele von # 2:. Echtzeit in militärischen Systemen Targeting, Hochfrequenz-Handelssysteme und

    In Bezug auf den zweiten Teil der Frage, „-Ausgabe zu achten“. Es gibt viele

    Stellen Sie sicher sind Auswertung Sie eine echte In-Memory-Datenbank, wenn Sie die Leistung benötigen, dass nur eine In-Memory-Datenbank liefern kann. eine persistente Datenbank-Caching ist nicht das gleiche. eine persistente Datenbank in einem RAM-Laufwerk zu werfen ist nicht das gleiche. eine In-Memory-Datenbank, die von Natur aus Transaktionsprotokollierung funktioniert (wie TimesTen) ist nicht das gleiche (auch wenn Sie sich auf / dev / null).

    Stellen Sie sicher, dass Sie ein Datenbanksystem zu bewerten und nicht nur ein Cache (z memcache). Ein Datenbanksystem wird die Unterstützung für Transaktionen mit den ACID-Eigenschaften, mehr Indizierungsoptionen, die gleichzeitigen Zugriff unterstützen und vieles mehr.

    Über ACID: In-Memory-Datenbanksystemen mangelt es nicht an den 'D' (Haltbarkeit). Es hat einfach in Zusammenhang genommen werden. Transaktionen in einer persistenten Datenbank sind nur dauerhaft, solange die Medien ist es auf dauerhaft gespeichert ist. Dasselbe ist für die In-Memory-Datenbanken wahr. In jedem Fall, wenn Sie Haltbarkeit sorgen, haben Sie besser eine Sicherung.

    scheint der Trend zu sein, aggressiv zu cachen und die Datenbank verwenden, um den Cache zu füllen. Unabhängig davon, wo die Datenbank lebt, schließt sich immer noch teuer, so dass die Präferenz einmal die Verbindung zu sein scheint zu tun, und das Ergebnis in so etwas wie Memcached oder Geschwindigkeit .

    Es gibt nach wie vor in-Memory-Datenbanken um und sie verwendet werden, aber es hängt von dem Kontext, den Sie wollen, dass sie verwenden. SQLite beispielsweise wird oft als Datenbank im Speicher verwendet wird, wenn Datenschichten zu testen.

    Der wichtigste Grund ist, Fracht Kultur und der sehr geringe Wissensstand in der IT. Die meisten Anwendungen arbeiten, was auch immer ausreichend gut die Persistenz-Lösung verwendet, und als Computer noch bekommen jedes Jahr schneller, nicht genug Leute fühlen den Schmerz und sind in der Lage, das Problem der Ortung.

    Microsoft und Oracle machen zu viel Geld mit ihren Datenbank-Produkten, um es (politisch) möglich, dass sie mit einem besseren Ansätzen zu entwickeln.

    Die Entwicklungskosten eine relationale Datenbank mit nicht transparent gemacht, so Management keine Ahnung hat, dass es ein Problem gibt, geschweige denn eine Lösung.

    Nun, In-Memory-Datenbanken fehlt im Allgemeinen die D (Haltbarkeit) in ACID (Unteilbarkeit, Konsistenz, Isolation , Haltbarkeit) durch ihre Natur. Dies kann zu einem bestimmten Zeitpunkt etwas (entweder die Daten selbst oder ein Transaktionsprotokoll) mit „Hybrid“ nähert sich jedoch in einem Ausmaß überwunden werden muss beibehalten werden irgendwo die Haltbarkeit Aspekt zur Verfügung zu stellen. Diese können in der Regel verlangsamen Leistung oder einführen andere nicht wünschenswerte Eigenschaften zu einer In-Memory-Datenbanklösung

    Im Gegensatz dazu die meisten der heutigen RDBMS die volle Ergänzung der ACID haben, sowie mit vielen Jahrzehnten der Entwicklung hinter sich. Dies hat in Disk-basierten Datenbanksystemen geführt, die sehr performant sind, vor allem mit den vielen Jahren Verbesserungen und Optimierungen, dass modernes RDBMS-System hat gesehen (der BTree Beispiel ist nur eines von vielen).

    Ein weiterer Faktor ist unsere Fähigkeit, als Anwendungsentwickler, die Last auf der Datenbank durch Mechanismen wie Caching , wodurch viel mehr wahrgenommen Leistung aus der Datenschicht einer Anwendung zusammenzudrücken. Tatsächlich hat Caching selbst umfangreiche Entwicklungen in den letzten Jahren mit heute üblich sind verteilt das Caching (nur Blick auf die Anzahl der diesem Wikipedia-Artikel , Microsoft sind Blick auf ganz bald in den in-Memory-Datenbank-Markt zu bekommen. Das ist zwei modernen „Big Player“ im traditionellen RDBMS-Feld, das In-Memory-Datenbanksysteme ernst nehmen.

    Dies ist auch eine Option: http://www.memsql.com/

    Ich habe es nicht persönlich in Anspruch genommen, aber es soll im Speicher entlang der Linien von einem Drop-in-Ersatz für MySQL sein.

    Verschiedene tragbare Versionen von SQL, die mit gleicher Effizienz arbeiten, die für mobile Geräte in erster Linie.

    SQLite

    SQL Server Compact Edition

    Dies sind nur große Spieler andere Optionen vorhanden sein können, aber große Spieler behandeln Mindestanforderungen mit dem Release von it ..:)

    und In-Memory-Datenbank haben Sie kontinuierlich die Daten sichern, wenn Fluktuation oder PowerCut entsteht Sie kann Verlust den ganzen Haufen. wie in anderen, die als in Sekundärspeicher (HDD) und der Wahrscheinlichkeit des Verlusts von 10% werden in den Speicher DB vergleichen gehandhabt wird.

    Ich hoffe, dies kann helfen:)

    Der typischste Anwendungsfall für eine Datenbank ist Beharrlichkeit, die die meisten In-Memory-Datenbanken ungeeignet macht. Ein beliebter Grund, eine In-Memory-Datenbank zu verwenden, ist für die Zwecke zu testen. Aber dies erfordert, dass Sie entweder eine Datenbank verwenden, die beide eingestellt werden können als in-Speicher und etwas anderes.

    Populäre Wahlen in diesem Bereich scheinen RavenDB für .NET-Entwickler und Orientdb für Java-Entwickler zu sein. Da beide können Funktion als In-Memory-Datenbanken und „etwas anderes“, je nach Konfiguration, so dass Sie die eine oder andere je nach Konfiguration (app.config in .Net, Maven oder Ant-Einstellungen in Java) verwenden können.

    Datenverarbeitungsanforderungen werden immer komplexer, und das Produkt Ökosystem entwickelt sich diese neuen Anforderungen zu erfüllen. Disk-basierte RDBMS, In-Memory-Cache und In-Memory-Datenbanken werden verwendet, um unterschiedliche Bedürfnisse zu befriedigen. Sie sollten mit gehen, was Ihrem Bedarf -

    Traditionelle RDBMS:. Ihre MySQL Cluster schnell genug ist, einfach genug zu halten und Sie wie die Zuverlässigkeit der ACID-Compliance mit

    In-Memory verteilt cahce: Ihre Anwendung schnell tun Lesen und Schreiben ohne zu viel Sorgen um Konsistenz oder komplexe Transaktionen.

    In-Memory-RDBMS:

    1. ( Geschwindigkeit ). Ihre Anwendung auf Prozessdaten / Anfragen schneller als die Disk-basierte Datenbank
    2. ( Komplexität .): Sie müssen komplexe Transaktions liest und schreibt machen mit Verknüpfungen und Aggregationen und wie die Leistung von SQL zu verwenden,
    3. ( Skalierbarkeit ): Sie müssen ohne Ausfallzeiten der Datenbank horizontal skalieren.
    4. ( Wartbarkeit ). Sie müssen die Datenbank eine hohe Verfügbarkeit bieten, Replikation, Load-Balancing und Disaster Recovery ohne Ihre Wartungsaufgaben Hinzufügen
    5. ( Caveat .): Ihre Daten sind im Speicher (in der Regel in Terabyte) passen
    Lizenziert unter: CC-BY-SA mit Zuschreibung
    Nicht verbunden mit StackOverflow
    scroll top