<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: В выпуске Berkeley DB 5.0 появилась поддержка SQL</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html</link>
    <description>Компания Oracle анонсировала (http://www.oracle.com/us/corporate/press/063695) релиз открытой БД Berkeley DB 5.0 (http://www.oracle.com/database/berkeley-db/db/index.html), ориентированной на эффективное и надежное хранение данных. Berkeley DB выполняется напрямую в использующих данную БД приложениях (встроена в приложение), позволяя программам быстрее выполняться на встраиваемых системах, включая КПК и мобильные устройства. Начиная с данного выпуска в официальном анонсе вместо порядкового номера версии (5.0) теперь фигурирует &quot;Berkeley DB 11g Release 2&quot;.&lt;br&gt;&lt;br&gt;&lt;br&gt;Основным улучшением новой версии является поддержка SQL API, позволяющего производить манипуляции с данными не только в классическом представлении ключ/значение, но и в виде совместимом с SQLite. Внимания также заслуживает появление поддержки  организации обращения к БД через коннекторы, совместимые со стандартами JDBC и ODBC. Кроме того, проведена адаптация Berkeley DB для мобильной платформы Android, при этом данная БД может выс...&lt;br&gt;&lt;br&gt;URL: http://www.ora</description>

<item>
    <title>В выпуске Berkeley DB 5.0 появилась поддержка SQL (funny_falcon)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html#34</link>
    <pubDate>Fri, 02 Jul 2010 15:25:05 GMT</pubDate>
    <description>я тестировал. &lt;br&gt;Простой тест:&lt;br&gt;  скрипт (тогда на питоне) вставляющий строки в таблицу без пауз в транзакции по 50-100 штук&lt;br&gt;  две - три консоли&lt;br&gt;  запускаешь во всех консолях скрипт&lt;br&gt;  ловишь ошибки доступа к файлу, таймауты и прочее&lt;br&gt;&lt;br&gt;Второй тест:&lt;br&gt;  малюсенькое приложеньеце, грабящее reddit.com&lt;br&gt;  малюсенькая вебморда для поиска по награбленному (с паджинацией)&lt;br&gt;  тормоза физически ощутимы&lt;br&gt;  seige -b (или ab - кому как нравится) - 10req/seq&lt;br&gt;  после переключения на Postgresql заметно ускорилось&lt;br&gt;</description>
</item>

<item>
    <title>В выпуске Berkeley DB 5.0 появилась поддержка SQL (Veter)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html#33</link>
    <pubDate>Fri, 26 Mar 2010 12:18:59 GMT</pubDate>
    <description>&amp;gt;Если открывает при подключении, то и база остается заблокированной на весь сеанс &lt;br&gt;&lt;br&gt;Нет, с чего бы. Пока мы не начнем модифицирующую транзакцию, никакой блокировки нет, читать можно из любого числа процессов параллельно. Как только один из процессов вносит изменения, выполняется блокировка и все остальные процессы приостанавливаются до окончания транзакции, после чего продолжают выполнять запросы.&lt;br&gt;&lt;br&gt;&amp;gt; В этом тесте тоже измеряются неконкурирующие отдельные запросы. &lt;br&gt;&amp;gt; Попробуйте протестировать работу нескольких &lt;br&gt;&amp;gt; конкурирующих процессов с активностью на запись данных. &lt;br&gt;&lt;br&gt;К примеру:&lt;br&gt;http://geomapx.blogspot.com/2009/11/postgresql-to-sqlite-replication.html&lt;br&gt;&lt;br&gt;Для веб-сервера тестировал от 20-ти до 100 одновременных потоков на чтение/запись, но тесты не выкладывал. Были проблемы примерно до версии эскулайт 3.5.9, о чем я уже упоминал, а сейчас все работает как надо.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>В выпуске Berkeley DB 5.0 появилась поддержка SQL (uldus)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html#32</link>
    <pubDate>Fri, 26 Mar 2010 11:55:10 GMT</pubDate>
    <description>&amp;gt;При _подключении_ открывает файл. Если в каждом коннекте только один запрос, то &lt;br&gt;&amp;gt;каждый будет &quot;с чистого листа&quot; - если не используется shared cache &lt;br&gt;&amp;gt;и встроенный сервер. &lt;br&gt;&lt;br&gt;Если открывает при подключении, то и база остается заблокированной на весь сеанс работы или сразу несколько процессов файл с базой на запись открывают и потом координуруют между собой каким-то образом внесение изменений в файл ?&lt;br&gt;&lt;br&gt;&amp;gt;результата не блокировать основную БД от записи. Зато скорость выполнения запросов &lt;br&gt;&amp;gt;радует: &lt;br&gt;&amp;gt;http://geomapx.blogspot.com/2009/11/postgresql-81-vs-sqlite-3620-in-real.html &lt;br&gt;&lt;br&gt;В этом тесте тоже измеряются неконкурирующие отдельные запросы. Попробуйте протестировать работу нескольких конкурирующих процессов с активностью на запись данных.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>В выпуске Berkeley DB 5.0 появилась поддержка SQL (Veter)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html#31</link>
    <pubDate>Fri, 26 Mar 2010 11:45:09 GMT</pubDate>
    <description>&amp;gt; Получается, что при каждом запросе sqlite открывает и закрывает файл,&lt;br&gt;&amp;gt; а при следующем запросе по сути начинает с чистого листа ?&lt;br&gt;&lt;br&gt;При _подключении_ открывает файл. Если в каждом коннекте только один запрос, то каждый будет &quot;с чистого листа&quot; - если не используется shared cache и встроенный сервер.&lt;br&gt;&lt;br&gt;В вебе использую отдельное подключение на каждый HTTP-запрос - т.к. процессор уровня кореквадро&lt;br&gt;позволяет в секунду инициировать около 8 000 новых подключений к базе, а количество выполняемых HTTP-запросов в разы меньше. Открытие БД занимает несколько сот микросекунд, в зависимости от сложности схемы БД и количества загружаемых расширений.&lt;br&gt;&lt;br&gt;В принципе, главное - использовать короткие транзакции. Например, делая копию выборки в in-memory таблицу (временную), чтобы на этапе отрисовки веб-страницы и прочей обработки результата не блокировать основную БД от записи. Зато скорость выполнения запросов радует:&lt;br&gt;http://geomapx.blogspot.com/2009/11/postgresql-81-vs-sqlite-3620-in-real.html&lt;br&gt;&lt;br&gt;Часто получается, что </description>
</item>

<item>
    <title>В выпуске Berkeley DB 5.0 появилась поддержка SQL (uldus)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html#30</link>
    <pubDate>Fri, 26 Mar 2010 11:07:02 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Как SQlite организует такую очередь без общего диспетчера ???&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Так это задача ОС - первому дать квант времени тому процессу, который &lt;br&gt;&amp;gt;дольше всех ждет. &lt;br&gt;&lt;br&gt;Это не то, пока заблокировавший базу процесс будет работать с данными планировщик задач успеет миллион раз отдать управление ожидающим освобождения процессам, а потом начнет сразу выполнение следующего запроса и остальные процессы так и будут ждать освобождения лока.  &lt;br&gt;&lt;br&gt;Вообще интересно конечно провести экперимент, запустить одновременно два процесса, которые в цикле будут делать UPDATE/INSERT случайных полей и посмотреть насколько равномерным получится распределение. Еще можно к тем двум добавить несколько выполняющих SELECT. Тогда сразу все по полкам разложится, насколько эффективно балансировка обращения к базе в SQLite работает.&lt;br&gt;&lt;br&gt;&amp;gt; Соответственно, именно этот процесс и выполнит очередную блокировку. &lt;br&gt;&lt;br&gt;Получается, что при каждом запросе sqlite открывает и закрывает файл, а при следующем запросе по сути начинает с чистого листа ?&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>В выпуске Berkeley DB 5.0 появилась поддержка SQL (Veter)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html#29</link>
    <pubDate>Fri, 26 Mar 2010 09:21:20 GMT</pubDate>
    <description>&amp;gt;Как SQlite организует такую очередь без общего диспетчера ???&lt;br&gt;&lt;br&gt;Так это задача ОС - первому дать квант времени тому процессу, который дольше всех ждет. Соответственно, именно этот процесс и выполнит очередную блокировку. При желании можно приоритетами процессов поиграться, но обычно в веб-приложениях все процессы равноценные.&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; Что касается самих данных, они кэшируются ОС и весьма эффективно - я уже приводил ссылку, где проверяется, что работа с дисковой БД не уступает по скорости операциям с кэшем в ОЗУ.&lt;br&gt;&amp;gt;Похоже в этом и было дело, все очень зависит от типа файловой &lt;br&gt;&amp;gt;системы и организации кеширования в ОС. Насколько я помню FreeBSD кеширует &lt;br&gt;&amp;gt;только мета-данные, видимо в этом и собака порылась. &lt;br&gt;&lt;br&gt;У меня всегда ext3. Кстати, в последних ядрах линукса еще много всего с кэшированием сделали, так что работа с большими базами (намного превосходящими по размеру объем ОЗУ) вроде как должна ускориться.&lt;br&gt;</description>
</item>

<item>
    <title>В выпуске Berkeley DB 5.0 появилась поддержка SQL (uldus)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html#28</link>
    <pubDate>Fri, 26 Mar 2010 09:09:41 GMT</pubDate>
    <description>&amp;gt;между ними &quot;вклиниться&quot; нельзя. Иначе запросы выполняются в порядке их поступления &lt;br&gt;&amp;gt;в очередь. &lt;br&gt;&lt;br&gt;Как SQlite организует такую очередь без общего диспетчера ??? Программы 1 и 2 прилинкованы к библиотеке, которая при каждом их запуске может судить только о глобальном локе базы (пока файл не будет разлочен, sqlite в нем ничего не сможет поменять), там же нет отдельного хранилища для очереди запросов и для каждого процесса получается своя очередь ?&lt;br&gt;&lt;br&gt;&amp;gt; Что касается самих данных, они кэшируются ОС и весьма эффективно - я уже приводил ссылку, где проверяется, что работа с дисковой БД не уступает по скорости операциям с кэшем в ОЗУ.&lt;br&gt;&lt;br&gt;Похоже в этом и было дело, все очень зависит от типа файловой системы и организации кеширования в ОС. Насколько я помню FreeBSD кеширует только мета-данные, видимо в этом и собака порылась.&lt;br&gt;</description>
</item>

<item>
    <title>В выпуске Berkeley DB 5.0 появилась поддержка SQL (Veter)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html#27</link>
    <pubDate>Fri, 26 Mar 2010 08:54:30 GMT</pubDate>
    <description>&amp;gt; Я вам про реальные приложения, а вы мне про синтетические тесты.&lt;br&gt;&lt;br&gt;Еще раз - реальные приложения - мои веб-системы с тучей конкурентных юзеров.&lt;br&gt;&lt;br&gt;&amp;gt; Поставьте RT, посадите писать тикеты нескольких пользователей - вот вам и тест.&lt;br&gt;&lt;br&gt;У эскулайта есть собственная распределенная система управления исходниками - fossil. Там же есть и тикеты и вики. Работает на оффсайте эскулайта, в том числе. И вот почему-то мне ни разу не приходилось ждать несколько секунд, добавляя тикеты, даже когда анонимное добавление было разрешено и этих тикетов море добавлялось.&lt;br&gt;&lt;br&gt;&amp;gt; Процесс 1 делает серию последовательных апдейтов базы A, &lt;br&gt;&amp;gt; процесс 2 чуть опоздав делает апдейт базы B.&lt;br&gt;&lt;br&gt;Есть понятие транзакционности. Если изменения идут в рамках одной транзакции, то, естественно, между ними &quot;вклиниться&quot; нельзя. Иначе запросы выполняются в порядке их поступления в очередь.&lt;br&gt;&lt;br&gt;&amp;gt; Если процесс 2 тоже интенсивно пишет в базу, не получится ли ситуация &lt;br&gt;&amp;gt; вечного перечитывания базы с диска при каждом запросе ?&lt;br&gt;&lt;br&gt;Зачем всю базу-то читать? Для</description>
</item>

<item>
    <title>В выпуске Berkeley DB 5.0 появилась поддержка SQL (uldus)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/65119.html#26</link>
    <pubDate>Fri, 26 Mar 2010 08:05:13 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Про deadlock в sqlite я уже не раз слышал. ...&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Улыбнуло. Где тесты? &lt;br&gt;&lt;br&gt;Я вам про реальные приложения, а вы мне про синтетические тесты. Поставьте RT, посадите писать тикеты нескольких пользователей - вот вам и тест.&lt;br&gt;&lt;br&gt;&amp;gt;Про &quot;однопользовательские системы&quot;, наверное, описка. Или 1000 конкурирующих процессов одного пользователя не &lt;br&gt;&lt;br&gt;В SQLite не может быть конкурирующих запросов по определению, в каждый момент времени только один процесс всегда имеет доступ к файлу с базой и данные между процессами не расшариваются и не кешируются. Остальные ждут своей очереди, если процесс агрессивно работает с базой, все остальные курят и ждут, пример - RT.&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt;В жестком диске одна головка пишет в один поток - делаете ли &lt;br&gt;&amp;gt;вывод, что удел жестких дисков - однозадачные системы? &lt;br&gt;&lt;br&gt;В СУБД подобных MySQL работает диспетчеризация запросов, при обработке текущего запроса есть картина об очереди запросов в целом и данные могут кешироваться в памяти, запросы обслуживаются одновременно. В SQLite такой диспетчеризации нет, к</description>
</item>

</channel>
</rss>
