You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on May 26, 2022. It is now read-only.
Copy file name to clipboardExpand all lines: clustering/greenplum.tex
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -127,7 +127,7 @@ \subsection{Хранение данных}
127
127
128
128
\subsection{Взаимодействие с клиентами}
129
129
130
-
В общем случае всё взаимодействие клиентов с кластером ведётся только через мастер~--- именно он отвечает клиентам, выдаёт им результат запроса и т. д. Обычные клиенты не имеют сетевого доступа к серверам-сегментам.
130
+
В общем случае всё взаимодействие клиентов с кластером ведётся только через мастер~--- именно он отвечает клиентам, выдаёт им результат запроса и~т.~д. Обычные клиенты не имеют сетевого доступа к серверам-сегментам.
131
131
132
132
Для ускорения загрузки данных в кластер используется bulk load~--- параллельная загрузка данных с/на клиент одновременно с нескольких сегментов. Bulk load возможен только с клиентов, имеющих доступ в интерконнекты. Обычно в роли таких клиентов выступают ETL-сервера и другие системы, которым необходима загрузка большого объёма данных (на рис~\ref{fig:greenplum_arch1} они обозначены как ETL/Pro client).
Copy file name to clipboardExpand all lines: clustering/postgres_x2.tex
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@ \section{Postgres-X2}
3
3
4
4
Postgres-X2~-- система для создания мульти-мастер кластеров, работающих в синхронном режиме~-- все узлы всегда содержат актуальные данные. Postgres-X2 поддерживает опции для увеличения масштабирования кластера как при преобладании операций записи, так и при основной нагрузке на чтение данных: поддерживается выполнение транзакций с распараллеливанием на несколько узлов, за целостностью транзакций в пределах всего кластера отвечает специальный узел GTM (Global Transaction Manager).
5
5
6
-
Измерение производительности показало, что КПД кластера Postgres-X2 составляет примерно 64\%, т.е. кластер из 10 серверов позволяет добиться увеличения производительности системы в целом в 6.4 раза, относительно производительности одного сервера (цифры приблизительные).
6
+
Измерение производительности показало, что КПД кластера Postgres-X2 составляет примерно 64\%, т.~е. кластер из 10 серверов позволяет добиться увеличения производительности системы в целом в 6.4 раза, относительно производительности одного сервера (цифры приблизительные).
7
7
8
8
Система не использует в своей работе триггеры и представляет собой набор дополнений и патчей к PostgreSQL, дающих возможность в прозрачном режиме обеспечить работу в кластере стандартных приложений, без их дополнительной модификации и адаптации (полная совместимость с PostgreSQL API). Кластер состоит из одного управляющего узла (GTM), предоставляющего информацию о состоянии транзакций, и произвольного набора рабочих узлов, каждый из которых в свою очередь состоит из координатора и обработчика данных (обычно эти элементы реализуются на одном сервере, но могут быть и разделены).
Copy file name to clipboardExpand all lines: extensions/hll.tex
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -11,11 +11,11 @@ \section{Postgresql-hll}
11
11
\item вероятность того, что совместно произойдут два независимых случайных события $A$ и $B$, вычисляется по формуле $P(A)*P(B)$. Таким образом, если вероятность равенства единице одного любого бита случайного числа составляет 50\%, тогда вероятность равенства единице двух любых битов составляет 25\%, трех~--- 12,5\% и т.д;
12
12
\end{itemize}
13
13
14
-
Вспомним еще одно базовое положение теории вероятностей, согласно которому ожидаемое количество испытаний, необходимое для наступления события, вычисляется по формуле $1/P(event)$. Следовательно, если $P(one\ specific\ bit\ set) = 50\%$, то ожидаемое количество испытаний равно 2. Для двух битов~--- 4, для трех битов~--- 8 и т. д.
14
+
Вспомним еще одно базовое положение теории вероятностей, согласно которому ожидаемое количество испытаний, необходимое для наступления события, вычисляется по формуле $1/P(event)$. Следовательно, если $P(one\ specific\ bit\ set) = 50\%$, то ожидаемое количество испытаний равно 2. Для двух битов~--- 4, для трех битов~--- 8 и~т.~д.
15
15
16
-
В общем случае входные значения не являются равномерно распределенными случайными числами, поэтому необходим способ преобразования входных значений к равномерному распределению, т.е. необходима хеш-функция. Обратите внимание, в некоторых случаях распределение, получаемое на выходе хеш-функции, не оказывает существенное влияние на точность системы. Однако HyperLogLog очень чувствителен в этом отношении. Если выход хеш-функции не соответствует равномерному распределению, алгоритм теряет точность, поскольку не выполняются базовые допущения, лежащие в его основе.
16
+
В общем случае входные значения не являются равномерно распределенными случайными числами, поэтому необходим способ преобразования входных значений к равномерному распределению, т.~е. необходима хеш-функция. Обратите внимание, в некоторых случаях распределение, получаемое на выходе хеш-функции, не оказывает существенное влияние на точность системы. Однако HyperLogLog очень чувствителен в этом отношении. Если выход хеш-функции не соответствует равномерному распределению, алгоритм теряет точность, поскольку не выполняются базовые допущения, лежащие в его основе.
17
17
18
-
Рассмотрим алгоритм подробно. Вначале необходимо хешировать все элементы исследуемого набора. Затем нужно подсчитать количество последовательных начальных битов, равных единице, в двоичном представлении каждого хеша и определить максимальное значение этого количества среди всех хешей. Если максимальное количество единиц обозначить $n$, тогда количество уникальных элементов в наборе можно оценить, как $2^n$. То есть, если максимум один начальный бит равен единице, тогда количество уникальных элементов, в среднем, равно 2; если максимум три начальных бита равны единице, в среднем, мы можем ожидать 8 уникальных элементов и т. д.
18
+
Рассмотрим алгоритм подробно. Вначале необходимо хешировать все элементы исследуемого набора. Затем нужно подсчитать количество последовательных начальных битов, равных единице, в двоичном представлении каждого хеша и определить максимальное значение этого количества среди всех хешей. Если максимальное количество единиц обозначить $n$, тогда количество уникальных элементов в наборе можно оценить, как $2^n$. То есть, если максимум один начальный бит равен единице, тогда количество уникальных элементов, в среднем, равно 2; если максимум три начальных бита равны единице, в среднем, мы можем ожидать 8 уникальных элементов и~т.~д.
19
19
20
20
Подход, направленный на повышение точности оценки и являющийся одной из ключевых идей HyperLogLog, заключается в следующем: разделяем хеши на подгруппы на основании их конечных битов, определяем максимальное количество начальных единиц в каждой подгруппе, а затем находим среднее. Этот подход позволяет получить намного более точную оценку общего количества уникальных элементов. Если мы имеем $m$ подгрупп и $n$ уникальных элементов, тогда, в среднем, в каждой подгруппе будет $n/m$ уникальных элементов. Таким образом, нахождение среднего по всем подгруппам дает достаточно точную оценку величины $log_2{(n/m)}$, а отсюда легко можно получить необходимое нам значение. Более того, HyperLogLog позволяет обрабатывать по отдельности различные варианты группировок, а затем на основе этих данных находить итоговую оценку. Следует отметить, что для нахождения среднего HyperLogLog использует среднее гармоническое, которое обеспечивает лучшие результаты по сравнению со средним арифметическим (более подробную информацию можно найти в оригинальных публикациях, посвященных \href{http://www.ic.unicamp.br/~celio/peer2peer/math/bitmap-algorithms/durand03loglog.pdf}{LogLog} и \href{http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf}{HyperLogLog}).
Copy file name to clipboardExpand all lines: extensions/pg_repack.tex
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -50,7 +50,7 @@ \subsection{Pgcompact}
50
50
\item анализ эффекта раздувания и обработка только тех таблиц, у которых он присутствует, для более точных расчетов рекомендуется установить расширение \href{https://www.postgresql.org/docs/current/static/pgstattuple.html}{pgstattuple};
51
51
\item анализ и перестроение индексов с эффектом раздувания;
52
52
\item анализ и перестроение уникальных ограничений (unique constraints) и первичных ключей (primary keys) с эффектом раздувания;
53
-
\item инкрементальное использование, т.е. можно остановить процесс сжатия без ущерба чему-либо;
53
+
\item инкрементальное использование, т.~е. можно остановить процесс сжатия без ущерба чему-либо;
54
54
\item динамическая подстройка под текущую нагрузку базы данных, чтобы не влиять на производительность пользовательских запросов (с возможностью регулировки при запуске);
55
55
\item рекомендации администраторам, сопровождаемые готовым DDL, для перестроения объектов базы, которые не могут быть перестроены в автоматическом режиме;
Copy file name to clipboardExpand all lines: extensions/plv8.tex
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -115,7 +115,7 @@ \subsection{NoSQL}
115
115
\item все данные (ключ и значение по ключу) это строка;
116
116
\end{itemize}
117
117
118
-
Для хранения данных многие документоориентированные базы данных используют JSON (MongoDB, CouchDB, Couchbase и т. д.). Для этого, начиная с PostgreSQL 9.2, добавлен тип данных JSON, а с версии 9.4~--- JSONB. JSON тип можно добавить для PostgreSQL 9.1 и ниже используя PLV8 и \lstinline!DOMAIN!:
118
+
Для хранения данных многие документоориентированные базы данных используют JSON (MongoDB, CouchDB, Couchbase и~т.~д.). Для этого, начиная с PostgreSQL 9.2, добавлен тип данных JSON, а с версии 9.4~--- JSONB. JSON тип можно добавить для PostgreSQL 9.1 и ниже используя PLV8 и \lstinline!DOMAIN!:
119
119
120
120
\begin{lstlisting}[label=lst:plv8js7,caption=Создание типа JSON]
\href{http://drotiro.github.io/postpic/}{PostPic} - расширение для PostgreSQL, которое позволяет обрабатывать изображения в базе данных, как PostGIS делает это с пространственными данными. Он добавляет новый типа поля \lstinline!image!, а также несколько функций для обработки изображений (обрезка краев, создание миниатюр, поворот и т. д.) и извлечений его атрибутов (размер, тип, разрешение). Более подробно о возможностях расширения можно ознакомиться на \href{https://github.com/drotiro/postpic/wiki/SQL-Functions-Guide}{официальной странице}.
3
+
\href{http://drotiro.github.io/postpic/}{PostPic} - расширение для PostgreSQL, которое позволяет обрабатывать изображения в базе данных, как PostGIS делает это с пространственными данными. Он добавляет новый типа поля \lstinline!image!, а также несколько функций для обработки изображений (обрезка краев, создание миниатюр, поворот и~т.~д.) и извлечений его атрибутов (размер, тип, разрешение). Более подробно о возможностях расширения можно ознакомиться на \href{https://github.com/drotiro/postpic/wiki/SQL-Functions-Guide}{официальной странице}.
Copy file name to clipboardExpand all lines: extensions/smlar.tex
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
1
\section{Smlar}
2
2
3
-
Поиск похожести в больших базах данных является важным вопросом в настоящее время для таких систем как блоги (похожие статьи), интернет-магазины (похожие продукты), хостинг изображений (похожие изображения, поиск дубликатов изображений) и т. д. PostgreSQL позволяет сделать такой поиск более легким. Прежде всего необходимо понять, как мы будем вычислять сходство двух объектов.
3
+
Поиск похожести в больших базах данных является важным вопросом в настоящее время для таких систем как блоги (похожие статьи), интернет-магазины (похожие продукты), хостинг изображений (похожие изображения, поиск дубликатов изображений) и~т.~д. PostgreSQL позволяет сделать такой поиск более легким. Прежде всего необходимо понять, как мы будем вычислять сходство двух объектов.
4
4
5
5
\subsection{Похожесть}
6
6
7
-
Любой объект может быть описан как список характеристик. Например, статья в блоге может быть описана тегами, продукт в интернет-магазине может быть описан размером, весом, цветом и т. д. Это означает, что для каждого объекта можно создать цифровую подпись~--- массив чисел, описывающих объект (\href{http://en.wikipedia.org/wiki/Fingerprint}{отпечатки пальцев}, \href{http://en.wikipedia.org/wiki/N-gram}{n-grams}). То есть нужно создать массив из цифр для описания каждого объекта.
7
+
Любой объект может быть описан как список характеристик. Например, статья в блоге может быть описана тегами, продукт в интернет-магазине может быть описан размером, весом, цветом и~т.~д. Это означает, что для каждого объекта можно создать цифровую подпись~--- массив чисел, описывающих объект (\href{http://en.wikipedia.org/wiki/Fingerprint}{отпечатки пальцев}, \href{http://en.wikipedia.org/wiki/N-gram}{n-grams}). То есть нужно создать массив из цифр для описания каждого объекта.
0 commit comments