<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Раздел полезных советов: Сравнение таблиц на удаленных серве...</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html</link>
    <description>Пришлось придумать как сравнить довольно таки объемные таблицы на предмет одинаковости данных в заданном поле. &lt;br&gt;Сравнивать построчно слишком долго и накладно таскать эти объемы по сети. &lt;br&gt;Выход посчитать md5 сумму по колонке для всех значений.&lt;br&gt;&lt;br&gt;Для этого выбираем поле по которому будем сравнивать, поле должно быть независимым от серверов. &lt;br&gt;Делаем из него blob, и считаем md5.&lt;br&gt;&lt;br&gt;Пример: есть таблица A и поле B.&lt;br&gt;&lt;br&gt;   select md5(array_send(array(select B from A order by 1))) as md5;&lt;br&gt;&lt;br&gt;после это сравнив md5 суммы с обоих серверов можно утверждать об одинаковости набора данных.&lt;br&gt;&lt;br&gt;&lt;br&gt;URL: &lt;br&gt;Обсуждается: http://www.opennet.ru/tips/info/1994.shtml&lt;br&gt;</description>

<item>
    <title>Сравнение таблиц на удаленных серверах PostgreSQL (Тормал)</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html#10</link>
    <pubDate>Tue, 24 Mar 2009 17:57:17 GMT</pubDate>
    <description>LIMIT/OFFSET можно использовать на лету. Дальше поиск делением где различия. Нагрузка на БД как раз будет больше при создании файлов. Так как диск используется дважды. + Сортировка по полям съест тотже объем памяти что и при подсчете md5.&lt;br&gt;</description>
</item>

<item>
    <title>Сравнение таблиц на удаленных серверах PostgreSQL (konst)</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html#9</link>
    <pubDate>Tue, 24 Mar 2009 17:49:53 GMT</pubDate>
    <description>&amp;gt;Собственно говоря а зачем файлы ? &lt;br&gt;&lt;br&gt;2 причины:&lt;br&gt;1) меньше нагрузка на БД (?)&lt;br&gt;2) иногда может потребоваться не только констатировать факт различий, но и найти их...&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Сравнение таблиц на удаленных серверах PostgreSQL (Тормал)</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html#8</link>
    <pubDate>Tue, 24 Mar 2009 17:43:00 GMT</pubDate>
    <description>Собственно говоря а зачем файлы ? &lt;br&gt;</description>
</item>

<item>
    <title>Сравнение таблиц на удаленных серверах PostgreSQL (konst)</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html#7</link>
    <pubDate>Tue, 24 Mar 2009 15:15:56 GMT</pubDate>
    <description>1. а что мешает делать вывод поля таблицы в файл (используя нужный order by x,y,z), а далее сравнивать по md5 сами файлы?&lt;br&gt;2. играясь опциями LIMIT/OFFSET можно вычислить &quot;тонкое место&quot; (где данные не совпадают), чтобы не таскать по сети большие объемы. а далее использовать diff...&lt;br&gt;3. Для этой цели можно написать скриптик, который сам все сделает:&lt;br&gt;Напр.:&lt;br&gt;1) с помощью limit/offset выгрузит поле в 100 (1000) файликов.&lt;br&gt;2) md3sum по ним с рез-тами в файл &amp;gt;&amp;gt; md5_1 (1-й сервер), md5_2 (2-й)&lt;br&gt;3) diff md5_1 md5_2&lt;br&gt;4) если найдены расхождения - diff по &quot;несовпадающим&quot; файлам...&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Сравнение таблиц на удаленных серверах PostgreSQL (Тормал)</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html#6</link>
    <pubDate>Mon, 23 Mar 2009 16:07:32 GMT</pubDate>
    <description>Ну ни кто не запрещал добавлять дополнительные условия во WHERE. Я только предложил методику. Так как у меня порядка 30 миллионов записей в таблице. Мне нужно было сравнить  наборы данных. И естественно я просматривал некоторые таблиц разбив на сегменты по дате например.&lt;br&gt;</description>
</item>

<item>
    <title>Сравнение таблиц на удаленных серверах PostgreSQL (Александр Макаренко)</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html#5</link>
    <pubDate>Sun, 22 Mar 2009 07:41:14 GMT</pubDate>
    <description>Это, наверное, выйдет за рамки задачи, которая стояла перед автором. :) Хотя довольно интересно. Если развивать Вашу идею далее, может выйти функция, обращающаяся к системным таблицам pg_*. :)&lt;br&gt;</description>
</item>

<item>
    <title>Сравнение таблиц на удаленных серверах PostgreSQL (Aleksey)</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html#4</link>
    <pubDate>Fri, 20 Mar 2009 15:29:32 GMT</pubDate>
    <description>В реальности все намного хуже. Мы же не учитываем порядок и ключ у таблицы. На примере: в первой таблице у Васи 100 рублей, у Пети 200. Во второй - наоборот. Просчет md5 по рублям даст один и тот же результат для этих двух таблиц. Т.е. они типа равны :)&lt;br&gt;&lt;br&gt;Поэтому в реальной ситуации надо использовать ключевые поля. Пусть в таблице A два поля - обычное B и ключевое K, тогда&lt;br&gt;&lt;br&gt;select md5(array_send(array(select md5(&apos;&apos; &amp;#124;&amp;#124; K) &amp;#124;&amp;#124; md5(&apos;&apos; &amp;#124;&amp;#124; B) from A order by K))) as md5;&lt;br&gt;</description>
</item>

<item>
    <title>Сравнение таблиц на удаленных серверах PostgreSQL (uldus)</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html#3</link>
    <pubDate>Fri, 20 Mar 2009 12:11:43 GMT</pubDate>
    <description>А если &quot;B&quot; текстовое поле и данных уйма,  от такого PostgreSQL ресурсы не съест ? &lt;br&gt;&lt;br&gt;Для текстовых данных лучше еще один вызов md5 добавить:&lt;br&gt;&lt;br&gt;select md5(array_send(array(select md5(B) from A order by 1))) as md5;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Сравнение таблиц на удаленных серверах PostgreSQL (Aleksey)</title>
    <link>https://mobile.opennet.dev/openforum/vsluhforumID3/50856.html#2</link>
    <pubDate>Fri, 20 Mar 2009 11:47:16 GMT</pubDate>
    <description>&amp;gt;Увы, нельзя утверждать. Коллизии никто не отменял. &lt;br&gt;&lt;br&gt;Угу. Только в данном случае вероятностью коллизии можно пренебречь. Потому что вероятность получить один хеш для случайных данных почти нулевая. Другое дело, если подбирать данные целенаправленно.&lt;br&gt;</description>
</item>

</channel>
</rss>
