Введение 4
1. Постановка задачи 5
2. Существующие подходы 6
3. Выполнение запроса в централизованном случае 8
3.1. Пример 8
3.2. До материализации 9
3.3. После материализации 10
4. Реализация 11
4.1. Основные понятия 11
4.2. Принцип работы сервера 12
4.3. Сериализация 12
4.4. Управление подключением и обнаружение ошибок 13
4.5. Сетевой считыватель: NetworkReader 14
4.6. Сетевой оператор: ReceivePos 15
4.6.1. Принцип работы 15
4.6.2. Восстановление после ошибок сети 15
4.6.3. Восстановление после ошибок сервера 16
5. Эксперименты 19
5.1. Ускорение 20
5.2. Масштабируемость 21
5.3. Накладные расходы 22
5.4. Восстановление соединений 22
Заключение 24
Список литературы 25
Интерактивная аналитическая обработка (OLAP) — один из популярных сценариев использования СУБД в индустрии [7, 13]. Данный сценарий используется для получения помощи в принятии бизнес-решений: генерации отчетов, анализа и предсказания продаж, оценки рисков и так далее.
Одна из основных особенностей такого сценария — редкое добавление новых данных в систему. В то же время необходимо иметь возможность исполнять сложные запросы над большими массивами данных за наименьшее время. Сам термин OLAP появился достаточно давно, в 1993 году [5], примерно в то же время было решено разделять два типа СУБД.
В начале XXI века область начала испытывать подъем, например в работе [4] указывается, что рынок OLAP систем в 1998 году оценивался всего в 2 миллиарда долларов США, а уже в 2006 году составлял 6 миллиардов долларов.
Одним из наиболее оптимальных способов организации СУБД, ориентированной на OLAP, является поколоночное хранение [2], позволяющее эффективно использовать аппаратные ресурсы системы [3].
Поддержка распределенности в том или ином виде в настоящее время является де-факто обязательным требованием к любой серьезной СУБД. Распределенность позволяет не только увеличивать объем хранимых данных, но и позволяет увеличивать эффективность выполнения запросов с помощью специальных алгоритмовс помощью специальных алгоритмов.
Аспект распределенности в классических (строковых) СУБД был подробнейшим образом изучен еще в 80-х. В то же время наблюдается дефицит или даже отсутствие исследовательских работ по распределенным колоночным СУБД. Конечно, к настоящему моменту было разработано несколько десятков индустриальных колоночных систем, однако научному сообществу про их внутреннее устройство практически ничего не известно. При этом, колоночные СУБД являются актуальной и востребованной в сообществе исследовательской темой. Дефицит публикаций объясняется просто: для проведения исследований в области распределенных колоночных СУБД необходимы специальные исследовательские прототипы таких систем. Функционально полных прототипов с открытым программным кодом на данный момент не существует [28].
При этом, использовать медиаторный подход [16] или расширять существующие централизованные СУБД нам не представляется оправданным в связи с имеющимися архитектурными ограничениями данных систем.
В связи с этим было принято решение с нуля начать разработку такой системы, которая получила название PosDB. Это касается и аспекта распределенности, которому и посвящена данная работа.
В рамках данной работы были достигнуты следующие результаты:
• В рамках сетевой подсистемы реализованы:
- сериализация различных сущностей: массивов данных, планов запроса, различных идентификаторов, выражений и предикатов,
- фрагментирование запроса и рассылка его по узлам-исполнителям,
- считывание данных с удаленных узлов,
- отслеживание сетевых ошибок и восстановление соединений.
• Экспериментально исследована построенная РСУБД с использованием эталонного теста производительности SSB:
- ускорение,
- масштабируемость,
- сетевые накладные расходы,
- эффективность реализованного подхода к восстановлению соединений.
[1] A study of PosDB Performance in a Distributed Environment / George Chernishev, Viacheslav Galaktionov, Valentin Grigorev et al. // Proceedings of the 2017 Software Engineering and Information Management. — SEIM ’17. — Saint-Petersburg, Russia, 2017.-6 p.
[2] Abadi Daniel J., Boncz Peter A., Harizopoulos Stavros. Column-oriented Database Systems // Proc. VLDB Endow. — 2009. — Aug. — Vol. 2, no. 2. — P. 1664-1665.— Access mode: https://doi.org/10.14778/1687553.1687625.
[3] Abadi Daniel J., Madden Samuel R., Hachem Nabil. Column-stores vs. Row-stores: How Different Are They Really? // Proceedings of the 2008 ACM SIGMOD International Conference on Management of Data. — SIGMOD ’08. — New York, NY, USA : ACM, 2008. — P. 967-980. — Access mode: http://doi.acm.org/10.1145/ 1376616.1376712.
[4] Chernishev George. Physical design approaches for column-stores // SPIIRAS Proceedings. — 2013. — Vol. 30. — P. 204-222. — online; accessed: www.mathnet.ru/ trspy682.
[5] Codd E.F., Codd S.B., Salley C.T. Providing OLAP (On-line Analytical Processing) to User-analysts: An IT Mandate. — Codd & Associates, 1993. — Access mode: https: //books.google.ru/books?id=pt0lGwAACAAJ.
[6] Costea Andrei, Ionescu Adrian. Query Optimization and Execution in Vectorwise MPP : Master’s thesis / Andrei Costea, Adrian Ionescu ; Vrije Universiteit Amsterdam. — 2012. — Aug.
[7] Date C.J. An Introduction to Database Systems.— 8 edition. — Boston, MA, USA : Addison-Wesley Longman Publishing Co., Inc., 2003.— ISBN: 0321197844.
[8] DeWitt David, Gray Jim. Parallel Database Systems: The Future of High Performance Database Systems // Commun. ACM. — 1992.—Jun.—Vol. 35, no. 6. — P. 85-98.— Access mode: http://doi.acm.org/10.1145/129888.129894.
[9] Eager D. L., Zahorjan J., Lazowska E. D. Speedup versus efficiency in parallel systems // IEEE Transactions on Computers. — 1989. — Mar. — Vol. 38, no. 3.— P. 408-423.
[10] Golub Marin, Jakobovic Domagoj, Janes Ivan. An overview of distributed programming techniques // Hypermedia and Grid Systems, MIPRO 2005.-2005.
[11] Graefe Goetz. Query Evaluation Techniques for Large Databases // ACM Computing Surveys. — 1993.— June.— Vol. 25, no. 2. — P. 73-169.
[12] Graefe G. Volcano — An Extensible and Parallel Query Evaluation System // IEEE Trans. on Knowl. and Data Eng. — 1994. — Feb. — Vol. 6, no. 1. — P. 120-135. — Access mode: http://dx.doi.org/10.1109/69.273032.
[13] Hector Garcia-Molina, Jeffrey D. Ullman, Jenifer Widom. Database Systems. The Complete Book. — 2nd edition. — Pearson Education, Inc, 2008.
[14] Hellerstein Joseph M., Stonebraker Michael, Hamilton James. Architecture of a Database System // Found. Trends databases. — 2007. — Feb. — Vol. 1, no. 2.— P. 141-259.—Access mode: http://dx.doi.org/10.1561/1900000002.
[15] High Performance Parallel Database Processing and Grid Databases / David Taniar, Clement H. C. Leung, Wenny Rahayu, Sushant Goel. — Wiley Publishing, 2008. — ISBN: 0470107626, 9780470107621.
...