В данном посте описана система блокировок и поддержания атомарности, согласованности, изолированности и надежности (ACID) в SQLite, а также алгоритмы записи и чтения из файла базы.
Читать полностью »
Рубрика «транзакции» - 4
Восстановление Apache Derby без резервной копии
2013-07-29 в 14:09, admin, рубрики: Apache, sql, Восстановление данных, транзакции, метки: восстановление данных, транзакцииДля собственного удовольствия у меня на личном компьютере крутится робот для Википедии (аккаунт1, аккаунт2, исходный код). Бот держит локальный кеш версий страниц Википедии — чтобы не ходить каждый раз на удалённый сервер за ними, а также набор специфичных данных, которые собирались последние пару лет и очень важны для работы бота. Данные собираются в базу данных под управлением Apache Derby, и, вместе с кешем, БД занимает около 50 Гб.
И вот, в один прекрасный выходной день, когда бот обрабатывал данные в 8 потоков на 4-х CPU, Abbyy Finereader распознавал 14-ый том русского биографического словаря под редакцией А. А. Половцева, а противники делали свой ход в Civilization Age of Kings… возник он — синий экран смерти. Давненько не виделись, подумал я, перезагружая компьютер. С причиной ладно — скорее всего проблемы с видеоадаптером на аппаратной почве. Вот только когда компьютер загрузился и я попробовал запустить бота ещё раз, возникло это:
ERROR XSDG2: Invalid checksum on Page Page
А прошлый бэкап, как обычно, датирован мартом месяцем…
Читать полностью »
Ещё один пример использования замыканий в PHP
2013-07-02 в 7:00, admin, рубрики: php, Веб-разработка, замыкания, транзакции, метки: PHP, замыкания, транзакции На Хабре уже было несколько статей с примерами использования замыканий в PHP. Некоторые из них были достаточно абстрактными, некоторые нет. Я приведу ещё один способ применения замыканий в реальных условиях.
Читать полностью »
Поддержка транзакций, тестового окружения и другие удобные надстройки над commons-dbutils
2013-06-13 в 20:16, admin, рубрики: java, jdbc, junit, orm, transactions, базы данных, Программирование, разработка, транзакции, метки: java, jdbc, junit, orm, transactions, базы данных, транзакцииПоддержка транзакций, тестового окружения и другие удобные надстройки над commons-dbutils.
"/>
Если обращение к RDBMS вашего проекта ведется не через ORM или Spring JdbcTemplate, то работу через голый JDBC может сильно скрасить commons-dbutils.
Особенно если его надстроить транзакциями, работой с разными окружениями, авто-открытием/закрытием ресурсов, запрсами read-only, обработкой SqlException, возвратом pk при вставке и т.д.
Т.е, например, чтобы можно было бы сделать так:
int userId = Sql.queryForValue("SELECT ID FROM OU.USERS WHERE LAST_NAME=?", "IVANOV");
Sql.update("DELETE FROM OU.USERS WHERE FIRST_NAME=? AND LAST_NAME=?", fname, lname);
List<User> list = Sql.query("SELECT FROM OU.USERS", USER_LIST_HANDLER);
int newId = Sql.insert("INSERT INTO OU.USERS VALUES (?,?)", fname, lname);
И этот код работал бы внутри транзакции, через Application Server Connction pool и в JUnit без изменений и mock-ов.
За чуть меньше года моей работы с commons-dbutils он оброс различными классами и утильными методами, о которых и хочу здесь рассказать.
Читать полностью »
Механизм атомарного коммита в SQLite
2013-05-30 в 18:41, admin, рубрики: sql, sqlite, sqlite3, Администрирование баз данных, базы данных, транзакцииЭта статья — частичный перевод одной интересной статьи с sqlite.org, в которой подробно рассматривается реализация транзакций в SQLite. На самом деле я очень редко работаю с SQLite, но тем не менее мне очень понравилась статья. Поэтому если хотите просто развить кругозор — будет интересно почитать. Первые две секции не включены в перевод, так как там нет ничего интересного, да и мне лень их набивать.
3.0 Однофайловый коммит
Мы начнём с обзора шагов, которые SQLite предпринимает, чтобы совершить атомарный коммит транзакции, которая затрагивает только один файл базы данных. Детали формата файлов, которые используются для защиты от повреждения БД и техники, которые применяются для коммита в несколько БД будут показаны ниже.
3.1 Начальное состояние
Состояние системы, когда соединение с БД только что было поднято, поверхностно изображено на рисунке справа. Справа показана информация, которая хранится на энерго-независимом носителе. Каждый прямоугольник — это сектор. Синий цвет говорит о том, что этот сектор содержит оригинальные данные. Посередине изображён дисковый кеш операционной системы. В самом начале нашего примера кеш холодный, это изображено белым цветом. На левой части рисунка — содержимое оперативной памяти процесса, который использует SQLite. Соединение с БД только что было открыто, и никакой информации прочитано не было.
Как же работают транзакции в Redis
2013-01-09 в 12:29, admin, рубрики: nosql, php, redis, rediska, Веб-разработка, транзакции, метки: PHP, redis, rediska, транзакцииРаботаю с Redis относительно недавно и вот возникла необходимость изменения одного ключа несколькими потоками одновременно. Для работы с Redis в php использую клиент Rediska. Еще когда читал мануал по Rediska видел раздел про транзакции, а сегодня пришло время почитать внимательнее.
Фичи, применимые в Yii, которые использую я
2012-11-07 в 16:21, admin, рубрики: ajax, php, yii, кеширование, логи, транзакции, метки: ajax, PHP, yii, кеширование, логи, транзакцииЗа долгое время работы с Yii Framework накопилось некоторое количество полезного опыта. Хочу им поделиться с читателим. Всё что ниже написано — плоды рефакторинга и трезвого взгляда на код.
То, о чем я расскажу под катом:
- Открытие одной и той же странички: через ajax-запрос (без layout) и обычное открытие странички вместе с layout
- Кеширование моделей без кода в каждой модели
- Как сделать логирование логики с минимальным кодом
- Как обернуть всё в транзакции с минимальным кодом
- Как сделать так, чтобы на каждом сервере (с экземпляром приложения) не менять файл основного конфига приложения. Упрощаем деплой
Django и особенности использования транзакций в MySQL
2012-05-20 в 16:00, admin, рубрики: django, innodb, mysql, orm, python, transactions, проблемы, транзакции, метки: Django, innodb, mysql, orm, python, transactions, проблемы, транзакции Наверное всем известно, что Django является одним из самых популярных фреймворков для web-разработки на python-е. И даже если в основе web-проекта лежит сторонний код, то зачастую при разработке используют отдельные части этого фреймворка — например ORM. В данной статье я хотел бы рассказать об особенностях использования Django ORM при работе с базой данных MySQL, а именно про транзакции и подводные камни, связанные с ними. Так, например, если в какой-то момент вы осознаёте, что вместо ожидаемых данных, возвращается совершенно другой результат, то возможно, данная статья поможет разобраться что к чему.
Читать полностью »
Атаки групп анонимных хакеров имеют практический финансовый смысл
2012-03-13 в 7:49, admin, рубрики: anonymous, транзакции, финансы, хакеры, метки: anonymous, транзакции, финансы, хакерыКонец прошлого года и начало этого смело можно назвать временем невиданной ранее активности различных хакерских групп, особняком среди которых находятся Anonymous. Согласно большинству сообщений о нарушении информационной безопасности, именно эта группа людей ответственна за DDOS-атаки и взломы сайтов таких серьезных организаций как ФБР и StratFor.
В комментариях к таким сообщениям часто высказывается мысль о том, что, собственно, усилия хакеров не имеют какого-либо практического смысла: некий сайт не работал несколько дней из-за DDOS-атаки или было украдено немыслимое количество гигабайт личной переписки секретных агентов — по сути, это ничего не меняло, если не считать явных политических целей, когда среди «слитых» данных, аутентичность которых еще под вопросом, обнаруживаются вдруг некие скандальные сведения о публичных персонах, которые вынуждены что-то делать с сомнительными обвинениями и как-то оправдываться. Здесь, безусловно, надо отметить, что среди акций Anonymous были и такие, которые можно признать «моральными»: тут достаточно вспомнить прекращение работы сети детской порнографии или публикацию списков любителей неонацистской тематики.
Также здесь особняком стоит операция "Робин Гуд", суть которой, согласно заявлениям хакеров, сводилась к тому, что украденные данные кредитных карт будут использованы для благотворительных целей.
Читать полностью »