Рубрика «базы данных» - 49

Постоянно разрабатывая корпоративные информационные системы, работающие с документами, сталкиваешься с задачей организации хранения документов в базе данных. При этом требуется обеспечить: надежное хранение структурированных и неструктурированных документов, ссылки между документами, хранение версий документов, развитые функции поиска документов, массовый ввод/вывод документов, эффективную одновременную работу большого числа пользователей с большим количеством документов, а также контроль доступа к документам.

Данные в информационных системах могут быть самыми разнообразными: от совсем не структурированныхЧитать полностью »

.NET / Миграции БД для .NET — новый ECM7.Migrator
О проблеме внесения изменений в БД в ходе разработки приложения писали на Хабре много раз.Версионная миграция БД — удобный подход к решению проблемы.
Уже долгое время я участвую в разработке ECM7.Migrator — инструмента для автоматизации изменений БД. О том, как его использовать и почему это удобно, мы писали здесь.
8 месяцев назад мы выпустили версию 2.0, а на этой неделе вышла версия 2.6. По сравнению с версией 2.0 многое изменилось.Полностью переписаны классы всех провайдеров: API стал проще и удобнее, все методы работают адекватно (а для проверки адекватности было написано большое количество модульных тестов);
Поддержка SQL AzureЧитать полностью »

Доброго времени суток. Многие из вас, кто так или иначе соприкасался с веб-разработкой, знают о таком удобном способе обращения к БД как ActiveRecord, чуть меньше человек согласиться, что это действительно очень удобно, примерно столько же понимает, что это далеко не всегда лучшее решение для проекта из соображений производительности. И это действительно так, но можно много чего придумать для избавления от этих проблем: кеширование всего и вся, различные архитектурные ухищрения и т.д.
Именно различными улучшениями AR мы и займемся на протяжении всего цикла этих статей :)
Если уж совсем подробно: мы будем вместе писатьЧитать полностью »

MySQL / немного о SELECT… FOR UPDATE и GET_LOCK
Для примера рассмотрим такой случай.
У нас есть MySQL база, в которой есть таблица queue. В эту таблицу поступают задания для выполнения.
Задания должны распределяться между процессами. Одна и та же задача не должна попасть к разным процессам.
Для решения задачи можно воспользоваться SELECT … FOR UPDATE.
Каждый процесс для получения задачи будет выполнять вот такой запрос.SELECT id FROM queue WHERE is_run = 0 ORDER BY date_task ASC LIMIT 1 FOR UPDATE
И помечать эту полученную задачу как занятую.UPDATE queue SET is_run = 1 WHERE id = ?
Теперь рассмотрим диаграмму работы процессов.
Процессы выполняются последовательно. Получается, что FOR UPDATE блокируетЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js