PDF: https://mega.co.nz/#!z4xkBZJJ!RrNmCqxBwT06rMiHhfBNDeLqso-jJzXlF2lMGvOWhyQ
PDF: https://mega.co.nz/#!z4xkBZJJ!RrNmCqxBwT06rMiHhfBNDeLqso-jJzXlF2lMGvOWhyQ
NoSQL is CoSQL! (Erik Meijer, YOW 2010)
Dec. 9th, 2010 08:14 amможно почитать больше и с картинками у Алексея - http://alexey.raga.name/
“- Теперь у меня есть на это ответ. Я знаю, что такое noSQL и покажу вам. Больше нет никакого смысла противопоставлять SQL и noSQL, теперь наступит мир, сказал Эрик.”
…Далее он всячески “наезжал” на язык SQL (а что, как архитектор MS SQL Server он легко может себе такое позволить) за отсутствие возможности композиции, отсутствие возможности рекурсии как таковой (да, есть теперь CTE, но это не то), за то, что тип результата не соответствует типу запроса, много и интересно ссылался на различных мировых светил и т.д.
…все законы и свойства, применимые к SQL-системам, дуально применимы к coSQL системам и наоборот. Взять ту же ссылочную целостность:
- в SQL ссылки направлены от родителя к детям, в coSQL – от детей к родителям;
- в SQL используется “внешняя” системы ссылок (объекты маркируются ID), в coSQL – внутренняя система (ссылки на сами объекты);
И так много, много пунктов.
Что из этого следует?
А то, что SQL и coSQL могут сосуществовать в одной экосистеме (и то, что этим занимается архитектор MS SQL Server уже является кое-каким намёком), а не являются “непримиримыми врагами”.
То, что (и Эрик это даже прямо сказал) обе эти системы могут иметь некий общий “интерфейс” и взаимодействие с системой (язык, если хотите) можно построить на основе этого “интерфейса”, то есть, одинаково работать и с тем и с другим.
То, что можно использовать наработки из одной системы в другой. Например, в SQL-системах имеются прекрасные оптимизаторы запросов и ещё куча всяческих полезных алгоритмов – вероятно, их можно будет применить в coSQL.
То, что, в конце концов, системы являются трансформируемыми друг в друга (и это следует напрямую из математики).
P.S. Нашел совершенно случайно. Подписался ;)
необходим embedded database engine. либо object-oriented, либо relational.
target platform – Linux, Windows, Windows Mobile. target language – C#. поддержка LINQ/EF не обязательна, но приветствуется.
в базе есть мэппинг NxM, по которому неплохо бы уметь делать выборки, ну и еще есть табличка с paging по datetime. в остальном на индексы пофигу (i.e. query by primary key only)
теоретчиески, его (мэппинг) можно засунуть в оперативку, должно влезть, тогда на индексы совсем пофигу.
более 10к записей на таблицу не планируется.
возня с orm, часть 2
Sep. 18th, 2009 03:26 pmоно вообще неплохо. работает. только вот мне как-то кажется, что компилить C# в AST, AST в SQL, SQL в query, query в план запроса (см. серию постов zabivator про устройство БД) - это какой-то оверкилл. просадка перформанса в дебаге оч существенная, по крайней мере.
предметная область обычно лучше мапится на динамическое ОО (спорно, конечно, но что делать, если например взяли и ввели проездные билеты на кол-во поездок, в дополнение к проездным на определенный срок)
так вот, кажется, что идеальное API для БД и для работы с файлами – это что-то вроде коллекций, которые хранятся или в памяти, или на носителе, и имеет copy-by-reference (для RAM или private storage) или copy-by-value (для сьемных носителей) семантику. ну и индексами они могут заведовать, чего уж там, это полезно :)
что-то подобное, кажется, приветствуют ребята из Фантома (dz и т.д.)
UPD: ну, не все так радужно, судя по совместному с ev_genus экспириенсу, подводных камней там тонны :) в основном потому, что если выбросить из головы процессы, файлы и потоки, то надо всё заново придумывать. как говорится, техника безопасности написана кровью.
цепочка ассоциаций
Sep. 13th, 2009 06:21 amувидел потенциальную багу, решил погуглить, запустил сэмпл, увидел багу в либе (не у себя), помучался часик с фиксом, нашел фикс, погуглил, нашел другую библиотеку, … кончилось все редизайном архитектуры, блиа
UPD: А реально ли запустить Entity Framework и Linq to SQL под Mono (Debian) с SQLite и PostgreSQL?
Мне уже кажется, что можно, но, возможно, я что-то упустил. То есть, есть 3 движка Linq to SQL (.NET, Mono, DBLinq) и 3 SQLite провайдера, почти все комбинации запускаются. Перебирать лень.
UPD2: Ага, щас. Микрософтовский SQL кодоген для autogenerated IDs для SQLite генерирует бред, DBLinq – полагается на дебильную эвристику “мы не будем строить метатипы, а понадеемся, что их явно везде юзер прописал, и дефолтные значения пропертей мы тоже не знаем”. ну что за гавно? причем, тесты проходят, т.е. это явно by design. Mono – обладает обеими багами сразу.