Übung Datenbanksysteme II Physische Speicherstrukturen. Maximilian Jenders. Folien basierend auf Thorsten Papenbrock

Ähnliche Dokumente
Übung Datenbanksysteme II Physische Speicherstrukturen. Thorsten Papenbrock

4.3 Hintergrundspeicher

Kapitel 6 Anfragebearbeitung

Übung Datenbanksysteme II Anfrageausführung. Thorsten Papenbrock

Anfragebearbeitung. Vorlesung: Dr. Matthias Schubert

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

Physische Datenorganisation

Physischer Datenbankentwurf: Datenspeicherung

KLAUSUR. zur Vorlesung Betriebssysteme SS Vorname Name Matrikelnummer

Anfragebearbeitung 2. Vorlesung Datenbanksysteme vom

Datenbanksysteme II Physische Speicherstrukturen (Kapitel 11) Felix Naumann. Datenmodellebene. Logischer Zugriff. Speicherstrukturen

Datenbanksysteme II Physische Speicherstrukturen Felix Naumann

Von der Platte zur Anwendung (Platte, Treiber, Dateisystem)

Technische Informatik II

Halt! Wo bin ich überhaupt?... C:\

DATEIVERWALTUNG INHALTSVERZEICHNIS. STANZL Martin 4. HB/a. Verwendete Literatur: Konzepte der Betriebssysteme (Seiten 91-97)

DBS: Administration und Implementierung Klausur

Fakten statt Bauchgefühl: RAID Mathematik für Admins

Operator-Kostenmodelle für Fortschrittsschätzung und Opt. Datenbanksystemen

Was machen wir heute? Betriebssysteme Tutorium 12. Organisatorisches. Frage 12.1.a. Programmieraufgaben Vorstellung. Antwort

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Grundlagen der Rechnerarchitektur

Grundlagen: Algorithmen und Datenstrukturen

Ein kleines Computer-Lexikon

OPERATIONEN AUF EINER DATENBANK

IO Performance in virtualisierten Umgebungen

Betriebssysteme WS 2012/13 Peter Klingebiel, DVZ. Zusammenfassung Kapitel 4 - Datenträger/Dateiverwaltung

Konzepte von Betriebssystem-Komponenten. I/O: von der Platte zur Anwendung

Physische Datenorganisation

Technische Informatik II

Algorithmen II Vorlesung am

Leistungsanalyse von Rechnersystemen

Systeme I: Betriebssysteme Übungsblatt 3

Vorlesung. Technologische Grundlagen der Informationsverarbeitung. Speicherung von Daten. Dipl.-Ing. Gert Martin

Informatik II, SS 2014

Betriebssysteme und Systemsoftware

Partitionierung unter Linux

Aufgabe 1: [Logische Modellierung]

Kapitel 7 Physische Datenorganisation. Speicherhierarchie Hintergrundspeicher / RAID Speicherstrukturen B-Bäume Hashing R-Bäume

Datenbanken: Architektur & Komponenten 3-Ebenen-Architektur

7. Sortieren Lernziele. 7. Sortieren

Algorithm Engineering. Alexander Kröller, Abteilung Algorithmik, IBR

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel

IO Performance - Planung Messung, Optimierung. Ulrich Gräf Principal Sales Consultant Oracle Deutschland B.V. und Co. KG

Verzeichnisbaum. Baumartige hierarchische Strukturierung Wurzelverzeichnis (root directory) Restliche Verzeichnisse baumartig angehängt

SSDs als Cache für HDDs

PRÄSENTATION MAGNETISCHE FESTPLATTEN. Proseminar Speicher- und Dateisysteme. Björn Fries 10. /

Konzepte von Betriebssystemkomponenten Disk-Caches und Dateizugriff

Betriebssysteme Vorstellung

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

Kapitel 2 Speicher. Magnetische Festplatten RAID. Disk Space Manager. Buffer Manager. Speicherverwaltung

Übung Datenbanksysteme I Relationale Algebra. Thorsten Papenbrock

Physische Datenorganisation

B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme

Inhalte der heutigen Vorlesung

Betriebssysteme (BTS)

Store. Prof. Dr. W. Riggert FH Flensburg

Wegweiser. Gegenstand und Begriffe. Dateien und Verzeichnisse. Implementationsaspekte. Ablauf eines Dateizugriffs. Plattenspeicher

Systeme 1. Kapitel 3 Dateisysteme WS 2009/10 1

Systemprogrammierung

Datenbanken: Indexe. Motivation und Konzepte

Betriebssysteme I WS 2014/2015. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/ , Büro: H-B 8404

6.2 FAT32 Dateisystem

Grundlagen der Informatik III Wintersemester 2010/2011

Algorithmen II Vorlesung am

The Five-Minute Rule for trading memory for disc accesses. Advanced Topics in Databases

Redundant Array of Inexpensive Disks

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

Physische Datenorganisation

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014


Prozesse und Prozessmanagement des BS. 1 Unterschied Prozess, Threads. 1.1 Prozess. 1.2 Threads

, WS2012 Übungsgruppen: Mo., Do.,

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur

Einleitung. Komplexe Anfragen. Suche ist teuer. VA-File Verfeinerungen. A0-Algo. GeVAS. Schluß. Folie 2. Einleitung. Suche ist teuer.

Kapitel II. Computersysteme (1) Einführung: Hardware und Software. Bauteile eines einfachen PCs

Datenbanksysteme I Übung: Relationale Algebra. Jana Bauckmann

Datenbanksysteme II: Storage, Discs, and Raid. Ulf Leser

Beweglicher Kamm: mit Schreib-/Leseköpfen, dicht über Magnetschicht, langsam beweglich (10 ms). Sektoren à 512 Bytes (netto).

Abschluss Einblick und Ausblick

Betriebssysteme (BS)

Systemprogrammierung. Speicherung von Dateien. Freispeicherverwaltung. Beispiele: Dateisysteme unter UNIX und Windows. Dateisysteme mit Fehlererholung

Seminar Medientechnik. Klassische Speichermedien. Bernhard Engstler. Übersicht

Im Kapitel Resourc Manager werden die verschiedenen Möglichkeiten der Überwachung von Messwerten eines Server oder Benutzers erläutert.

Übungen zum Fach Betriebssysteme Kapitel 6

Festplattenspeicher. Datenaufzeichnung magnetisch. Schreib-Lesekopf. Magnetisierbare Schicht. c~åüüçåüëåüìäé açêíãìåç

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Kapitel 8: Physischer Datenbankentwurf

Kapitel 7 Physische Datenorganisation. Speicherhierarchie Hintergrundspeicher / RAID B-Bäume Hashing R-Bäume

Star Join & Kostenbasierte Optimierung. Architektur von Datenbanksystemen II

Bisher haben wir ein RDBMS als Black Box betrachtet und gelernt, wie man es effektiv einsetzen kann

Kapitel 10: Relationale Anfragebearbeitung

Datenbanksystem. System Global Area. Hintergrundprozesse. Dr. Frank Haney 1

GRUNDLAGEN VON INFORMATIONSSYSTEMEN INDEXSTRUKTUREN I: B-BÄUME UND IHRE VARIANTEN

Systemanforderungen ab Version 5.31

Datenbanksysteme II Klausurvorbereitung Felix Naumann

Storage Optionen für I/O intensive Applikationen

Verteilte Systeme. Verteilte Systeme. 5 Prozeß-Management SS 2016

Windows 8 Upgrade / Neuinstallation

Inhaltsverzeichnis. BüroWARE Systemanforderungen ab Version Generelle Anforderungen SoftENGINE BüroWARE SQL / Pervasive. 2

Transkript:

Übung Datenbanksysteme II Physische Speicherstrukturen Maximilian Jenders Folien basierend auf Thorsten Papenbrock

Organisatorisches: Übung Datenbanksysteme II 2 Übung Maximilian Jenders (Maximilian.Jenders@hpi.de) Tutoren Andreas Burmeister Jaspar Mang Julian Risch Mailingliste fragen-dbs2-2014@hpi.uni-potsdam.de Hilfe zur Selbsthilfe: Fragen gegenseitig beantworten Tutoren und Mitarbeiter lesen mit Keine Email erhalten? -> Melden

Organisatorisches: Übung Datenbanksysteme II 3 Neues Abgabesystem Abgabe immer in Zweiergruppen Abgabe und Korrektur nur noch digital Abgaben anderer Kurse bitte ignorieren URL: http://www.dcl.hpi.uni-potsdam.de/submit/ Neuer Übungsmodus Mit Abgabe der 1. Übung verbindliche Wahl des Modus Übungsbearbeitung verbindlich oder optional? Wenn optional: Trotzdem Zweiergruppen finden Wahl per Abgabe 1 Aufgabe 0 (verbindlich für alle) Modus pro Gruppe gleich Übungsthemen Hausaufgabenthemen

Erinnerung: Dezimal- vs. Binär-Einheiten 4

Übersicht: Physische Speicherstrukturen 5 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Oberflächen pro Platte: 2 Anzahl Platten: 5 Rotationsgeschwindigkeit: 5000 U/min Lesekopfbewegung über n Spuren: (1 + 0,002 n) ms Blockgröße: 1024 Byte Lücken pro Spur: 10 % 0,5 Start 0,002 n Bewegung 0,5 Stop Aufteilung der Sektoren auf den Spuren muss nicht tortenförmig sein! evtl. außen mehr Sektoren

Aufgabe 1: Speicherkapazität berechnen 6 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Oberflächen pro Platte: 2 Anzahl Platten: 5 a) Gesucht: Kapazität einer Spur K Spur = Sektorgröße Sektoren pro? Spur = 512 Byte 64 = 32 KiB b) Gesucht: Kapazität einer Oberfläche K Oberfläche = K Spur Spuren pro Oberfläche? = 32 KiB 2048 = 64 MiB c) Gesucht: Kapazität der Festplatte K Platte = K Oberfläche Anzahl Oberflächen? = 64 MiB 2 5 = 640 MiB

Aufgabe 1: Speicherkapazität berechnen 7 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Oberflächen pro Platte: 2 Anzahl Platten: 5 d) Gesucht: Anzahl Zylinder auf dieser Festplatte 2048 (= Anzahl Spuren)? e) Gesucht: Sind die folgenden Blockgrößen zulässig? 256 Byte 1.024 Byte Nein: Blöcke können nicht? kleiner als 1 Sektor sein Ja: Block umfasst genau? 2 Sektoren 51.200 Byte Nein: Pro Spur gibt es nur? 64 512 = 32.768 Byte

Aufgabe 2: Latenzzeiten berechnen 8 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Rotationsgeschwindigkeit: 5000 U/min Lesekopfbewegung über n Spuren: (1 + 0,002 n) ms Blockgröße: 1024 Byte Lücken pro Spur: 10 % a) Gesucht: Minimale, maximale und durchschnittliche Latenzzeit zum Lesen eines Blocks Latenzzeit = Kommunikation + Seek + Rotation + Transfer vernachlässigbar für alle drei Fälle gleich

Aufgabe 2: Latenzzeiten berechnen 9 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Rotationsgeschwindigkeit: 5000 U/min Lesekopfbewegung über n Spuren: (1 + 0,002 n) ms Blockgröße: 1024 Byte Lücken pro Spur: 10 % a) Gesucht: Minimale, maximale und durchschnittliche Latenzzeit zum Lesen eines Blocks Latenzzeit = Kommunikation + Seek + Rotation + Transfer Rotationszeit = 1 U / Rotationsgeschw. = 1 / 5000 min = 12 ms Sektorwinkel = 360 90 % / 64 = 5,0625 Lückenwinkel = 360 10 % / 64 = 0,5625 Blockwinkel = 2 Sektorlänge + 1 Lückenlänge (2. Lücke ist ja egal) = 2 5,0625 + 1 0,5625 = 10,6875 L Transfer = 10,6875 / 360 12 ms = 0,35625 ms

Aufgabe 2: Latenzzeiten berechnen 10 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Rotationsgeschwindigkeit: 5000 U/min Lesekopfbewegung über n Spuren: (1 + 0,002 n) ms Blockgröße: 1024 Byte Lücken pro Spur: 10 % a) Gesucht: Minimale, maximale und durchschnittliche Latenzzeit zum Lesen eines Blocks Latenzzeit = Kommunikation + Seek + Rotation + Transfer L Transfer_min = 0,35625 ms (= L Transfer ) L Seek_min = 0 ms (Lesekopf auf passender Spur) L Rotation_min = 0 ms (Lesekopf genau vor dem Block) L min = 0,35625 ms + 0 ms + 0 ms = 0,35625 ms

Aufgabe 2: Latenzzeiten berechnen 11 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Rotationsgeschwindigkeit: 5000 U/min Lesekopfbewegung über n Spuren: (1 + 0,002 n) ms Blockgröße: 1024 Byte Lücken pro Spur: 10 % a) Gesucht: Minimale, maximale und durchschnittliche Latenzzeit zum Lesen eines Blocks Latenzzeit = Kommunikation + Seek + Rotation + Transfer L Transfer_max = 0,35625 ms (= L Transfer ) L Seek_max = (1 + 0,002 2048) ms = 5,096 ms (über alle Spuren) L Rotation_max = 12 ms (volle Rotation) L max = 0,35625 ms + 5,096 ms + 12 ms = 17,45225 ms

Aufgabe 2: Latenzzeiten berechnen 12 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Rotationsgeschwindigkeit: 5000 U/min Lesekopfbewegung über n Spuren: (1 + 0,002 n) ms Blockgröße: 1024 Byte Lücken pro Spur: 10 % 1/3 der Spuren ist eine gute Annäherung L Seek_max / 2 a) Gesucht: Minimale, maximale und durchschnittliche Latenzzeit zum Lesen eines Blocks Latenzzeit = Kommunikation + Seek + Rotation + Transfer L Transfer_avg = 0,35625 ms (= L Transfer ) L Seek_avg = (1 + 0,002 2048 / 3) ms 2,355 ms (avg. Distanz) L Rotation_avg = 12 ms / 2 = 6 ms (halbe Rotation) L avg = 0,35625 ms + 2,355 ms + 6 ms = 8,71125 ms

Aufgabe 3: Daten speichern 13 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Oberflächen pro Platte: 2 Anzahl Platten: 5 Blockgröße: 1024 Byte Datei mit 100.000 Tupeln der Größe 100 Byte Es gibt keine Tupel, die auf mehrere Blöcke aufgeteilt sind a) Gesucht: Anzahl Tupel pro Block Tupel pro Block = (Blockgröße / Tupelgröße) = (1024 Byte / 100? Byte) = 10

Aufgabe 3: Daten speichern 14 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Oberflächen pro Platte: 2 Anzahl Platten: 5 Blockgröße: 1024 Byte Datei mit 100.000 Tupeln der Größe 100 Byte Es gibt keine Tupel, die auf mehrere Sektoren aufgeteilt sind b) Gesucht: Anzahl Blöcke für vollständige Datei Blöcke für Datei = (Anzahl Tupel / Tupel pro Block) = (100.000 / 10)? = 10.000

Aufgabe 3: Daten speichern 15 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Oberflächen pro Platte: 2 Anzahl Platten: 5 Blockgröße: 1024 Byte Datei mit 100.000 Tupeln der Größe 100 Byte Es gibt keine Tupel, die auf mehrere Sektoren aufgeteilt sind c) Gesucht: Maximale Anzahl Tupel auf der gesamten Festplatte

Aufgabe 3: Daten speichern 16 Sektorgröße: 512 Byte Sektoren pro Spur: Ø 64 Spuren pro Oberfläche: 2048 Oberflächen pro Platte: 2 Anzahl Platten: 5 Blockgröße: 1024 Byte Datei mit 100.000 Tupeln der Größe 100 Byte Es gibt keine Tupel, die auf mehrere Sektoren aufgeteilt sind c) Gesucht: Maximale Anzahl Tupel auf der gesamten Festplatte Blöcke pro Spur = Sektoren pro Spur / Sektoren pro Block = 64 / (1024 / 512) = 32 Tupel pro Festplatte = Tupel pro Block Blöcke pro Spur Spuren pro Oberfläche Oberflächen pro Platte Anzahl Platten = 10 32 2048 2 5 = 6.553.600

Aufgabe 4: Daten lesen 17 Anzahl Zylinder: 8192 Seekzeit für n Zylinder: (1 + 0,002 n) ms Rotationszeit: Ø 6,5 ms Transferzeit: Ø 0,5 ms Initiale Lesekopfposition: 4000 Anfragen: Eintreffen der Anfrage 0 ms 3 ms 11 ms 19 ms Angefragter Zylinder 6500 2000 8000 3500 a) Gesucht: Bearbeitung der Anfragen mit First-Come, First-Served b) Gesucht: Bearbeitung der Anfragen mit dem Elevator Algorithmus

Aufgabe 4: Daten lesen Eintreffen der Anfrage 0 ms 3 ms 11 ms 19 ms Angefragter Zylinder 6500 2000 8000 3500 18 Anzahl Zylinder: 8192 Seekzeit für n Zylinder: (1 + 0,002 n) ms Rotationszeit: Ø 6,5 ms Transferzeit: Ø 0,5 ms Initiale Lesekopfposition: 4000 Anfangsbeispiel Start Time Request Queue 0ms 6500 6500 Request in Progress End Time Direction

Aufgabe 4: Daten lesen Eintreffen der Anfrage 0 ms 3 ms 11 ms 19 ms Angefragter Zylinder 6500 2000 8000 3500 19 Anzahl Zylinder: 8192 Seekzeit für n Zylinder: (1 + 0,002 n) ms Rotationszeit: Ø 6,5 ms Transferzeit: Ø 0,5 ms Initiale Lesekopfposition: 4000 Anfangsbeispiel Start Time Request Queue Request in Progress End Time 0ms 6500 6500 (1+0,002 2500)+6,5+0,5 =13ms 13ms Direction

Aufgabe 4: Daten lesen Eintreffen der Anfrage 0 ms 3 ms 11 ms 19 ms Angefragter Zylinder 6500 2000 8000 3500 20 Anzahl Zylinder: 8192 Seekzeit für n Zylinder: (1 + 0,002 n) ms Rotationszeit: Ø 6,5 ms Transferzeit: Ø 0,5 ms Initiale Lesekopfposition: 4000 First-Come, First-Served Start Time Request Queue Request in Progress End Time 0ms 6500 6500 (1+0,002 2500)+6,5+0,5 =13ms 13ms 2000 8000 30ms 8000 3500 2000 (1+0,002 4500)+6,5+0,5 =17ms 8000 (1+0,002 6000)+6,5+0,5 =20ms 50ms 3500 3500 (1+0,002 4500)+6,5+0,5 =17ms 67ms Direction

Aufgabe 4: Daten lesen Eintreffen der Anfrage 0 ms 3 ms 11 ms 19 ms Angefragter Zylinder 6500 2000 8000 3500 21 Anzahl Zylinder: 8192 Seekzeit für n Zylinder: (1 + 0,002 n) ms Rotationszeit: Ø 6,5 ms Transferzeit: Ø 0,5 ms Initiale Lesekopfposition: 4000 Elevator Algorithmus Start Time Request Queue Request in Progress End Time 0ms 6500 6500 (1+0,002 2500)+6,5+0,5 =13ms 13ms 8000 2000 24ms 3500 2000 8000 (1+0,002 1500)+6,5+0,5 =11ms 3500 (1+0,002 4500)+6,5+0,5 =17ms 41ms 2000 2000 (1+0,002 1500)+6,5+0,5 =11ms 52ms Direction

Aufgabe 5: Daten auf verschiedenen Spuren 22 Rotations- und Lesekopfgeschwindigkeit sind konstant, d.h. Rotationslatenz und Seektime sind unverändert sequentielle Datentransferrate ist auf äußeren Spuren größer, falls dort mehr Sektoren pro Spur angelegt wurden Wo sollte man daher die folgenden Dateien für die genannten Zugriffe positionieren (innen, mitte, außen)? seltene, sequentielle Scans einer großen Datei einer kleinen Datei häufiger, random Zugriff auf eine kleine Datei eine große Datei per Index z.b Tabelle z.b Systemkatalog

Aufgabe 5: Daten auf verschiedenen Spuren 23 Wo sollte man daher die folgenden Dateien für die genannten Zugriffe positionieren (innen, mitte, außen)? seltene, sequentielle Scans einer großen Datei: außen Kosten dominiert durch sequentiellen Datentransfer Sequentieller Datentransfer ist außen am schnellsten einer kleinen Datei: innen Kosten dominiert durch initialen Seek und Rotation (Lesen einer kleinen Datei ist effektiv Random I/O) Innen wird nichts optimiert, aber das Lagern kleiner, selten zugegriffener Dateien tut hier am wenigsten weh

Aufgabe 5: Daten auf verschiedenen Spuren 24 Wo sollte man daher die folgenden Dateien für die genannten Zugriffe positionieren (innen, mitte, außen)? häufiger, random Zugriff auf eine kleine Datei: mitte Kosten dominiert durch Seek und Rotation Seek wird in der Mitte minimiert (Wegen häufigem Zugriff ist die Optimierung der Seektime hier am wichtigsten) eine große Datei per Index: innen Kosten dominiert durch häufigen Seek zwischen Datei und Index Seek wird durch nahes Zusammenlegen minimiert Beim Platzieren innen sparen wir den jeweils wertvollen äußeren und mittleren Platz

Hard Disk Main Memory Aufgabe 6: Daten sortieren: TPMMS 25 Algorithmus: Prefetching! Vorteil? 3 Final Order 4 1 1 2 6 6 8 2 3 9 13 5 4 7 12 8 7 18 Partition Heads 2 8 11 2 11 12 18 7 5 7 5 4 10 9 10 9 6 10 10 17 3 15 12 15 12 8 11 11 9 13 1 14 1 14 13 15 14 13 15 14 6 16 17 16 17 18 16 17 18 16 1 2 18 Partitions (1) (2) (3) (4) (5) Input Sort Merge start Merge progressed Output

Aufgabe 6: Daten sortieren: TPMMS 26 Gedankenspiel: Three-Phase-Multiway-Merge-Sort 1. Warum könnte er notwendig sein? Es passen nicht alle Köpfe vorsortierter? Teillisten in den RAM. 2. Wie könnte ein Three-Phase-Multiway-Merge-Sort funktionieren? P1: Sort; P2: (Pre-)Merge jeweils? n Teillisten; P3: Merge alle Listen Um wie viel steigen die Lese- und Schreibkosten? 1 x alle Tupel lesen + 1 x alle Tupel? schreiben 3. Die Partitionen müssen nicht unbedingt Hauptspeicher-groß sein. Welche Vorteile könnte eine Partitionsgröße Hauptspeichergröße 2 haben? Sortieren im RAM müsste nicht in-place? sein und ist so O(n*log(n))