Thomas Kejser hat mal wieder einen sehr interessanten Artikel zum SQL Server geschrieben, der aber - so weit ich sehe - allgemein für relationale Datenbanken relevant ist, und in dem es um den Definition performanter Queue-Tabellen geht. Der Herr Kejser schreibt dazu:
It can be argued that old school, relational databases and tables are not the best structures to implement durable storage for message queues. The many code paths needed in relational algebra to implement ACID properties, generic concurrency, serialization and block I/O can get in the way of a fast queue implementation, especially the naïve implementation of relational purists.However, if we combine our knowledge of programming with database design skills, high throughput can be achieved even in the relational model and there are large, often overlooked improvements to be found.
Relativ viele der Einwände, die aus dem NoSQL-Lager gegen klassische RDBMS erhoben werden, haben wohl auch damit zu tun, dass dort das Sachwissen über relationale Datenbanken nicht immer extrem groß ist.
Das von Thomas Kejser vorgestellte Verfahren basiert darauf, die Queue mit einer fixen Länge anzulegen und Einträge über UPDATE anzupassen, statt sie über INSERT/DELETE zu verarbeiten, was massive Probleme mit Statistiken, Latches, Index Splits etc. mit sich bringt.
Keine Kommentare:
Kommentar veröffentlichen