Dies ist vielleicht die grundlegendste aller ABAP-Fragen, und zwar nicht nur, wenn man sich mit performanten Lookups auseinandersetzt. Sobald man etwas in ABAP macht, wird man auf diese Frage stoßen.
Table of Contents
Die am häufigsten verwendete interne Tabellenart ist die Standardtabelle. Dies ist zum Teil historisch bedingt, da Hash- und sortierte Tabellen erst seit dem Release 4.0 verfügbar sind. Des Weiteren sind die Standardtabellen schnell zu befüllen, da jeder neue Datensatz ohne weiteres am Ende der Tabelle hinzugefügt werden kann (siehe APPEND). Bei sortierten oder Hash-Tabellen muss dagegen erst einmal der richtige Ort gefunden (siehe INSERT) bzw. der Hash-Schlüssel generiert werden. Zum Schreiben ist die Standardtabelle somit zu bevorzugen.
Für Lesezugriffe sind Standardtabellen allerdings ein Performancekiller. Denn diese werden im Gegensatz zu den anderen Tabellen linear durchsucht. Wird also eine Standardtabelle mit 50.000 Datensätzen durchsucht, beginnt die Suche immer beim allerersten Datensatz. Im ungünstigsten Fall, wenn der gesuchte Datensatz an der letzten Stelle steht, müssen alle vorhergehenden 49.999 Datensätze auch gelesen werden.
Wie sich das bei Lookups auswirkt, wird anhand des nachstehenden Beispiels verdeutlicht:
Nehmen wir an, wir haben eine interne Tabelle X mit 50.000 Datensätzen, bei der jeder Datensatz mit Informationen einer Datenbanktabelle Y ergänzt werden muss. Im besten Fall haben wir nur die relevanten Datensätze aus Datenbanktabelle Y in einer internen Tabelle Z geladen. Diese enthält somit für jeden unserer X-Datensätze genau einen entsprechenden Datensatz (auch 50.000).
Die Art der Tabelle X ist zweitrangig, da wir dadurch LOOPEN müssen und dabei jeden einzelnen Datensatz auslesen. Wenn Z aber eine Standardtabelle ist, werden wir für unser LOOKUP insgesamt 1.250.025.000 (50.000!) Lesezugriffe haben. Bei SAP BW on HANA verarbeitet man oft sogar Datenpakete mit 200.000 oder mehr Datensätzen. In unserem Beispiel würden wir bei der Anwendung einer Standardtabelle für Z dann bei 20.000.100.000 Lesezugriffen pro Datenpaket landen.
Selbstverständlich können auch die Standardtabellen aufsteigend sortiert und dann mit BINERY SEARCH durchsucht werden. Warum dann aber nicht gleich eine sortierte oder Hash-Tabelle nehmen? Eine Daumenregel ist, dass bei ca. 10.000 Datensätzen beide Tabellenarten ungefähr gleich schnell sind. Bei deutlich größeren Tabellen ist die Hash-Tabelle nicht zu schlagen, da die Zugriffszeit, unabhängig von der Größe, nahezu konstant ist. Bei weniger als 10.000 Datensätzen gibt es in der Regel keine Performanceprobleme.
Hash-Tabellen haben aber den "Nachteil", dass sie nur eindeutige Datensätze enthalten sollen. Wenn es also nicht möglich ist, eindeutige Tabellenschlüssel zu erzeugen, zum Beispiel durch die Aggregation der selektierten Daten, sollte man mit sortierten Tabellen arbeiten.
Zusammengefasst heißt das:
Braucht man eine interne Tabelle zum Schreiben, sollte man eine Standardtabelle nehmen.
Muss man eine große interne Tabelle durchsuchen, sollte man eine Hash-Tabelle verwenden.
Muss man eine große interne Tabelle mit nicht eindeutigen Datensätzen durchsuchen, sollte man eine sortierte Tabelle nutzen.
Wer ist b.telligent?
Du willst den IoT Core durch eine Multi-Cloud-Lösung ersetzen und die Vorteile weiterer IoT-Services von Azure oder Amazon Web Services nutzen? Dann melde Dich bei uns und wir unterstützen Dich bei der Umsetzung mit unserer Expertise und dem b.telligent Partnernetzwerk.
Exasol ist ein führender Hersteller von analytischen Datenbanksystemen. Das Kernprodukt ist eine auf In-Memory-Technologie basierende Software für die professionelle, parallele und schnelle Datenanalyse. Normalerweise werden SQL-Statements in einem SQL-Skript sequenziell abgearbeitet. Wie können aber mehrere Statements gleichzeitig ausgeführt werden? Dies zeigen wir anhand eines einfachen Skripts in diesem Blogbeitrag.
Viele Unternehmen mit SAP-Quellsystemen kennen diese Herausforderung: Sie wollen ihre Daten in einen Azure Data Lake integrieren, um sie dort mit Daten aus anderen Quellsystemen und Applikationen für Reporting und Advanced Analytics weiterzuverarbeiten. Auch die neuen SAP-Informationen zur Nutzung des SAP-ODP-Frameworks führten bei b.telligent Kunden zu Fragen. In diesem Blogbeitrag stellen wir drei gute Ansätze zur Datenintegration (in die Microsoft Azure Cloud) vor, die wir bei b.telligent empfehlen und die von der SAP unterstützt werden.
In Teil 1 fassen wir die Anforderungen der Kunden zusammen.
Viele Unternehmen entscheiden sich im Rahmen ihrer aktuellen Modernisierung- und Digitalisierungsinitiativen, ihr Datawarehouse (DWH) oder auch ihre Datenplattform in die Cloud zu heben. Dieser Beitrag diskutiert aus fachlicher/organisatorischer Sicht, welche Aspekte dafür besonders wichtig sind und welche Strategien dabei helfen, etwaige Risiken zu minimieren. Eine Migration sollte nicht als rein technische Übung verstanden werden. "Weiche" Faktoren und Fachlichkeit haben einen deutlich höheren Einfluss.