Die wunderbare Welt von Isotopp
Was bedeutet eigentlich 'Relationale Algebra'?
SQL ist eine Abfragesprache, die als mathematischen Unterbau die Relationenalgebra hat. Was genau ist das?
Da ist einmal der Begriff der “Algebra”. In der Wikipedia findet man die mathematische Definition der algebraischen Struktur, und sie ist, weil sie mathematischen Formalismen genügen muß, für den ungeübten ein wenig unhandlich zu lesen.
Dort steht aber nix anderes als ‘Wir haben eine Grundmenge A und einen definierten Satz von erlaubten Operationen auf A, und wir garantieren, das das Ergebnis jeder Operation wieder in A liegt.’ Mehr nicht. Eine Algebra ist also eine Struktur, die Elemente enthält, mit denen man rechnen kann (etwa die natürlichen Zahlen), und Operationen, die definieren, was erlaubte Rechenoperationen sind (etwa die Addition). Wenn etwas eine Algebra ist, dann heißt das, daß man mit dem Ergebnis der Operation wieder in A landet, also mit dem Ergebnis weiter rechnen kann.
Zählen von Aktionen
Hier ist noch ein dreckiges kleines MySQL-Problem. Matthias Fiedler fragt:
Ich möchte in einer Tabelle bestimmte Werte bzw. Datensätze ändern. Das läuft in einer Schleife und ich möchte mitzählen, wie viele Datensätze wirklich geändert wurden….
Wenn ich nur Update benutze und der Datensatz in der Tabelle ist identisch mit dem neuen, dann wird kein Update ausgeführt. Somit kann ich hier mit mysql_affected_rows() die Menge zählen. Das hat aber einen Nachteil: Manche Datensätze sind ja noch gar nicht in der Tabelle. Da geht ja dann auch kein Update.
Spatial Indices
On 2010-04-06 12:26:49 +0200, Egon Schmid said:
Ich hab eine 60 MB grosse SQL-Datei von der OpenGeoDB (->http://fa-technik.adfc.de/code/opengeodb/) runtergeladen, wo sämtliche Informationen der Deutschlandkarte vorhanden sind, und werde es damit mal testen.Das Ausführen der INSERTs dauert allerdings einige Stunden :) Es läuft derzeit immer noch…
InnoDB, AUTOCOMMIT = 1. Vor dem source von DE.sql ein BEGIN WORK machen, danach ein COMMIT. Dann geht es sehr viel schneller.
Mit diesen Daten und einem Beispielort kann man experimentieren.
Über ENUM (und Fast Alter Table)
On 2010-04-08 13:40:57 +0200,
gibt es ein sinnvolles Maximum für die Anzahl von Elementen in einem ENUM?
ENUM hat in MySQL 5.1 einige Eigenschaften, die überraschend sind. Zum Beispiel
root@localhost [kris]> create table t (id integer unsigned not null primary key, e enum('a', 'b', 'c') not null ) engine = innodb;
Query OK, 0 rows affected (0.21 sec)
root@localhost [kris]> insert into t values (1, '');
Query OK, 1 row affected, 1 warning (0.00 sec)
Warning (Code 1265): Data truncated for column 'e' at row 1
root@localhost [kris]> insert into t values (2, 'c');
Query OK, 1 row affected (0.00 sec)
root@localhost [kris]> select id, e, hex(e), e+0 from t;
+----+---+--------+-----+
| id | e | hex(e) | e+0 |
+----+---+--------+-----+
| 1 | | | 0 |
| 2 | c | 63 | 3 |
+----+---+--------+-----+
2 rows in set (0.00 sec)
Obwohl t.e ein ENUM ist, das per Definition keinen Wert ’’ zuläßt, hat MySQL den Wert ’’ abspeichern können, wenn auch mit einer Warnung.
Löschen statt Sperren
FDP und CSU streiten über Websperren . Und zwar auf hohem intellektuellen und sprachlichem Niveau. Das Wort des Tages heute also: “Scheinaktionsmus”. Weil: Was die Welt wirklich braucht ist echter Aktionsimus !
Unterdessen fragt der CSU-Europaabgeordnete Manfred Weber wieso “die Löschung von Daten keine Zensur sei, aber das reine Sperren.”
Das, lieber Herr Weber, fängt schon mal damit an, daß bei einer Löschung von Daten der jeweils Betroffene quasi zwangsläufig davon erfährt und dadurch dann auch die Möglichkeit hat, die ihm zustehenden Rechtsmittel einzulegen. Falls Ihnen rein hypothetisch einmal durch ein bedauerliches Versehen in einem Einzelfall etwa ein Wikileaks-Video mit auf die Kinderporno-Sperrliste geraten sollte. Falls die Löschung aber legitim ist, dann ist durch sie das betreffende Material an dieser Stelle für alle aus dem Netz geräumt und nicht nur für die Deutschen, die zufälligerweise gerade nicht Google DNS verwenden. In jedem Fall erzwingt die Löschung so die Einhaltung von Qualitätsstandards bei der Erstellung und Umsetzung von Löschlisten und ermöglicht weiterhin einen gesellschaftlichen Diskurs zu diesem wichtigen Thema, während eine Sperrung nur einen Mantel des Schweigens über ein Thema deckt, bei dem schon viel zu viel geschwiegen wird.
Staatskirchenrecht
Warum zahlen wir in Deutschland Kirchensteuer und keinen Zehnt an die jeweilige Kirche direkt? Wieso ist an einigen Tagen Tanzverbot? Wieso verbietet das Bundesverfassungsgericht dem Land Berlin die Öffnung von Einkaufszentren an Sonntagen, hat aber mit Busfahrern, die Sonntags arbeiten müssen keine Probleme? Wieso meinen deutsche Bischöfe selbst entscheiden zu können, welche Fälle von Kindsmißbrauch den Staat angehen und welche die Kirche intern klärt?
Im preisgekrönten USA erklärt stellt Scot heute die amerikanische Sicht auf die Dinge dar. Will man an die Quellen, schaut man sich Artikel 140 unseres Grundgesetzes an. Der ist recht kompliziert, denn er lautet im Volltext:
The Laundry
In einem Blogartikel verweist Charles Stross auf das recht bald erscheinende The Laundry Rollenspiel (Chaosium Cthulhu-Regeln). Das Spiel ist in der Laundry-Welt angesiedelt, in der etwa auch The Atrocity Archives spielt, also in einer Welt, in der höhere Mathematik mit schwarzer Magie identisch ist und das Gewebe der Realität umdefinieren kann, und in der Verschwörungstheorien real werden, wenn nur genug Leute daran glauben - mit anderen Worten, man spielt im Hier und Jetzt… :)
Persona - was Julia Seeliger mit Marcel D'Avis verbindet
Ich schreibe diesen Beitrag einmal provisorisch in meine Kategorie ‘Blog’, aber es könnte genau so gut auch in die Kategorie ‘Politik’, ‘Piraten’, in das Tag ‘privacy’ oder in eine andere Klassifizierung passen.
Was ich mit meinem Blog und allen meinen anderen Veröffentlichungen mache, ist eine Marke ‘Kristian Köhntopp ’ zu bauen. Es ist unvermeidlich, daß ich unter meinem Namen eine Datenspur in dieser Welt hinterlasse - ich brauche nicht anzutreten um zu versuchen, diese zu verstecken.
Gruppenweises TOP N in MySQL: Der Tabellengrößenreport
Jeder Datenbankserver bei uns hat ein Script laufen, daß den Inhalt von information_schema.tables jede Nacht einmal in eine Systemdatenbank in das DBA Schema kopiert. Dort haben wir dba.table_sizes:
root@sysmdb [dba]> show create table table_sizes\G
Table: table_sizes
Create Table: CREATE TABLE `table_sizes` (
`hostname` varchar(64) NOT NULL,
`datadir` varchar(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`report_date` date NOT NULL,
`table_schema` varchar(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`table_name` varchar(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`engine` varchar(64) NOT NULL,
`data_length` bigint(20) NOT NULL,
`index_length` bigint(20) NOT NULL,
`table_rows` bigint(20) NOT NULL,
UNIQUE KEY `hostname` (`hostname`,`datadir`,`report_date`,`table_schema`,`table_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
Gesucht war nun eine Query, die für jeden Sonntag eine Liste der 10 größten Tabellen eines bestimmten Servers ‘master’ für 2010 produziert.
INSERT ON DUPLICATE KEY UPDATE
Auf Yourhelpcenter.de gibt es einen Artikel mit dem irreführenden Titel Update if exists else insert record , der sich mit INSERT ON DUPLICATE KEY UPDATE beschäftigt.
Dieses Kommando macht genau nicht das, was der Titel des Artikels suggeriert und wünschenswert wäre, sondern er macht genau das, was der SQL-Text des Kommandos sagt und leider nervt. Es wäre schön, wenn der Artikel auf Yourhelpcenter auch auf diese Probleme eingegangen wäre - da er es nicht tut hole ich es hier gerade mal nach.