Archive

Archive for July, 2010

MySQL & PostgreSQL

July 28th, 2010 No comments

При сравнении MySQL и PostgreSQL исторически сформировался следующий подход:

MySQL часто рассматривают как быструю базу данных, более легкую в настройке и использовании, в то время как PostgreSQL с самого начала разрабатывалась как база с большим числом настроек и более точным соответствием стандарту.

Часть 1: Сравнительный анализ.
MySQL и PostgreSQL – две наиболее популярные open-source базы данных в мире. Каждая база имеет свои особенности и отличия. Если вам нужно быстрое хранилище для простых запросов с минимальной настройкой, я бы порекомендовал MySQL. Если вам нужно надежное хранилище для большого объема данных с возможностью расширения, репликации, полностью соответствующее современным стандартам языка SQL, я бы предложил использовать PostgreSQL.

Часть 2: Конфигурация MySQL.

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

Часть 3: Конфигурация PostgreSQL.

Конфигурация, идущая по умолчанию, в большинстве случаев не рассчитана на максимальное использование ресурсов – это справедливо как для PostgreSQL, так и для MySQL. Пути по умолчанию для каталогов можно изменить непосредственно при сборке из исходников. Некоторые параметры постгресу можно передавать из командной строки. Так же можно определить переменную окружения PGOPTIONS, а значения некоторых переменных можно изменить прямо в процессе выполнения запросов.

Часть 4: Масштабирование MySQL.

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

Часть 5: Масштабирование PostgreSQL.

В предыдущей статье мы обсудили вопросы масштабирования MySQL. Рассмотрим эти моменты для сервера баз данных PostgreSQL.

Часть 6: Репликация MySQL.

Реализация репликаций в MySQL имеет ряд недостатков, над которыми активно ведется работа. Google выпустил несколько патчей, улучшающих возможности репликации. Ведется работа над multimaster и построчной репликациями, которые появятся в будущих версиях. Имеются планы по автоматической конфигурации слэйвов. Все это вселяет уверенность в том, что одна из самых востребованных на сегодняшний день open-source баз данных MySQL станет еще продуктивнее, еще быстрее, еще надежнее.

Tags: ,

Защита JavaBeans в приложениях JSF

July 21st, 2010 No comments

Эта серия из пяти статей знакомит с системой безопасности Acegi и показывает, как использовать Acegi для обеспечения безопасности корпоративных Java-приложений. Эта заключительная статья продолжает обсуждение использования Acegi для обеспечения безопасности приложений JSF. В части 4 я показал, как можно обеспечить безопасность страницы JavaServer Faces (JSF) с использованием Acegi без написания какого-либо программного кода на Java. Я также подробно разобрал события, которые происходят при развертывании приложения JSF-Acegi и при обращении пользователя к нему. В этот раз я сосредоточусь на методах обеспечения безопасности JavaBeans в приложениях JSF.

Сначала я покажу, что концепции безопасности bean-компонентов, которые я описывал в части 3 этой серии, могут применяться и к приложениям JSF, но не идеальны для них. Затем я продемонстрирую пару новых методов, особенно удобных для обеспечения безопасности JavaBeans, используемых в приложениях JSF. Я закончу обсуждение представлением четырехступенчатой стратегии, которая позволяет использовать Acegi для обеспечения безопасности bean-компонентов в приложениях JSF без написания какой-либо защитной программы на Java.


Подробнее на IBM developerWorks Россия

Tags: ,

Новые возможности Apache Solr

July 14th, 2010 No comments

Apache Solr представляет собой поисковый сервер с открытым исходным кодом, основанный на Apache Lucene и работающий преимущественно через протокол HTTP. В 2007 г. на сайте developerWorks была опубликована серия из двух статей под названием Умный поиск при помощи Apache Solr, в которых содержалась вводная информация о Solr. Однако после выпуска версии 1.3 пришло время описать множество новых возможностей и усовершенствований, появившихся с тех времен.

Solr предоставляет множество функций, делающих его пригодным для использования в корпоративных приложениях, а именно: поддержку простого конфигурирования и администрирования, поддержку множественных связей между клиентами и языками, репликацию индексов, кэширование, статистику и журналирование. Кроме того, в версии 1.3 существенно улучшена производительность благодаря громадному прогрессу в быстродействии Apache Lucene 2.3, а также использованию новой обратно совместимой и встраиваемой компонентной архитектуре. Данная архитектура послужила основанием для появления большого числа новых компонентов, которые дополнительно расширяют возможности Solr. Например, в релиз 1.3 вошли следующие компоненты:

* проверка орфографии с поддержкой функции “Вы, наверное, имели в виду следующее?”;
* поиск документов по принципу схожести;
* возможность переопределения результатов поиска (так называемое “платное размещение”).

Более того, даже существующая функциональность, например разбор запросов, поиск, сегментирование и отладка, была переработана с учетом компонентного подхода, который позволяет разработчикам создавать собственные обработчики (экземпляры SolrRequestHandler) путем сцепления компонентов. Наконец, в Solr появилась возможность непосредственной индексации содержимого базы данных. Это очень важно для многих корпоративных приложений, так как позволяет осуществлять распределенный поиск по очень большим хранилищам данных.

Мы начнем с краткого описания ключевых моментов в Solr, а затем перейдем к последней версии и ее установке (в том числе к некоторым моментам перехода с предыдущей версии). Далее мы рассмотрим некоторые из главных улучшений по сравнению с предыдущим релизом и закончим обзором некоторых новых функций Solr.

Подробнее на IBM developerWorks Россия

Новые математические возможности Java

July 7th, 2010 No comments

В этой серии из двух статей Эллиотта Гарольда рассматриваются “старые-новые” возможности хорошо известного класса java.lang.Math. Первая часть посвящена исключительно математическим функциям, а во второй речь пойдет о функциях, созданных для работы с числами с плавающей точкой.

В пятой версии спецификации языка Java™ (Java Language Specification) было добавлено 10 новых методов в классы java.lang.Math и java.lang.StrictMath. Еще 10 методов появилось в шестой версии. В первой статье серии были рассмотрены методы, имеющие четкое математическое определение, знакомое математикам, жившим до изобретения компьютеров. В этой статье основное внимание будет уделено методам, смысл которых становится ясен только при осознании того, что они оперируют с числами с плавающей точкой, а не c абстрактными вещественными числами.

В первой части отмечалось важное отличие вещественных чисел, таких как e или 0.2, от их машинного представления, например, типа данных double в Java. Точное представление вещественного числа может быть бесконечно длинным, в то время как в Java на представление отводится фиксированное число битов (32 для float и 64 для double). Максимальным числом, представимым в формате float, является примерно 3.4*1038. Этого в некоторых случаях может не хватить, например, для числа электронов во Вселенной.

Тип данных double способен представлять числа до 1.8*10308, чего, как мне кажется, должно хватать для практически всех физических величин. Однако при вычислении абстрактных математических значений можно выйти за пределы этого ограничения. Например, число 171! (171 * 170 * 169 * 168 * … * 1) больше максимального числа, представимого в формате double, а float не хватает уже для вычисления 35!. Малые числа (числа, близкие к нулю) также могут представлять собой проблему, поэтому вычисления, в которых участвуют очень большие либо очень малые числа, являются потенциально небезопасными.

В стандарте IEEE 754 для операций с плавающей точкой (см. раздел Ресурсы) вводятся специальные величины: Inf для представления бесконечности и NaN (Not a Number) для представления всего, что не является числом. В этом стандарте также определены положительные и отрицательные нули (в обычной математике ноль не обладает знаком, а в компьютерной – может обладать любым знаком). Эти значения являются настоящим бедствием при доказательстве классических теорем. В частности, закон исключенного среднего (law of exluded middle) не выполняется в присутствии NaN, поскольку утверждение x == y или x != y оказывается ложным, если x или y равен NaN.

Часть 1. Вещественные числа
Часть 2. Числа с плавающей точкой

Tags: