За реляционные базы

топ 100 блогов jakobz06.03.2014 Идея хранить и оперировать данными в виде табличек - охуенна. У данных в таком виде есть куча полезных свойств - они нормально кладутся на диск, они сериализуемы, их можно весьма эффективно менять одновременно сохраняя удобные инварианты, их можно разглядывать в любой момент времени, можно рисовать понятные простым людям квадратики и стрелочки. Можно даже сделать DSL про алгоритмы поверх этих данных, который будет самостоятельно решать все эти ваши проблемы с O(n^2).

Проблема реляционной алгебры и SQL-баз - в полном отсутствии средств абстракции. Есть такое слово - "денормализация". Когда вы слышите это слово - читайте его так: мы будем закатывать вручную солнце, т.к. ни в одной БД нет средств абстрагирования. Все что мы имеем - вьюхи, триггеры, и хранимки - все это годами затачивалось под использование неграми с мотыгами на закате. Белому человеку от идеи трогать это своими ухоженными руками, делается грустно.

Приведу пример. Есть связь User->Order->OrderLine. Имея OrderLine, в нормализованной базе, мы не можем достать UserID, не сходив по двум связям. На практике, если потребуется, UserID скопируют и в OrderLine, будут вручную следить чтобы у OrderLine был тот же UserID что и у Order, и будут называть "денормализацией". Что по моему скромному мнению, в текущей ситуации торжества науки, светодиодов и айфонов, выглядит полным беспросветным пиздецом.

Мне грезятся альфа-бета-комбинаторы для реляционных данных. "Эту колонку клади в обе таблицы", "эти две таблицы физически лежат в одной", "readonly-поле createdBy заполняется при коммите", и т.п. Механизм, который позволит делать из одной кучки таблиц, удобной с точки зрения производительности, другую кучку, удобную для мозга. С прозрачным чтением и записью туда-сюда.

Вариант с альфа-бета-реляционными комбинаторами не претендует на единственное возможное решение проблемы. Сама проблема в том, что на данный момент ни ORM, ни вьюхи, ни триггеры, ни NO-SQL базы, ни блокнотик, ни dev\null, ничего из существующих технологий не позволяет забывать про то, как тщательно их разработчики раскладывают битики на диск.

У нас есть SSD, гигагерцы процессоров. Есть стандартная модель элементарных частиц. Вокруг планеты летают кругами предварительно разогнанные до гигантских скоростей куски из металла и наноэлектроники. А мне ни одна технология не позволяет положить уже хуй на эти битики и оперировать данными удобно, с транзакциями, не думая про планы запросов, и не занимаясь всякими ручными "денормализациями". В 21-м веке любой программист, хранящий важные данные - негр с мотыгой на фоне тросника и заката.

Оставить комментарий

Архив записей в блогах:
Довелось сегодня вечером принять участие в качестве наблюдателя в рейде против таксистов-нелегалов. Из разных точек города заранее известные люди вызывали по телефону таксо-фирмы тут ее название до Морского вокзала, где документы у таксующего проверяли люди в фуражках и с полосатой ...
Партия «Родина» выдвинула в Госдуму от Свердловской области бывшего депутата регионального Заксобрания, побывавшего в «психушке». Партия «Родина» утвердила списки кандидатов в Госдуму РФ на предстоящих сентябрьских выборов, сообщает корреспондент "ВЕДОМОСТЕЙ Урал". По одному из округов ...
   Красота - странное понятие. По идее нечто природное, переданное нам с генами от родителей или же индивидуально получившееся, свое и личное. Искаженное сейчас тем, что уже зачастую не существует сама в своей природе, а напичкана, забита ...
Снега навалило сразу много, крупными хлопьями.И падал он довольно долго, так что сразу и проблемы появились — заносы на дорогах, заторы... Словенцы к зиме привыкли. Это ж только в последние несколько лет снега было мало, а так и я помню, как скребла не раз пузом машинки по снегу на ...
То, что намеченная на сегодня акция протеста серьёзно напугала готовящуюся к инаугурационным торжествам власть, стало понятно ещё ранним утром, когда почти все центральные площади и улицы были зачищены не только от автомобилей (что ещё можно ...