Slide 1

Slide 1 text

PostgreSQL, Hasql, Haskell и жонглирование Никита Волков

Slide 2

Slide 2 text

Эта функция простая?

Slide 3

Slide 3 text

Эта функция простая? 1

Slide 4

Slide 4 text

Эта функция простая? 1 1

Slide 5

Slide 5 text

Эта функция простая? 1 1 1

Slide 6

Slide 6 text

Эта функция простая? 1 1 1 1

Slide 7

Slide 7 text

Эта функция простая? 1 1 1 1 1

Slide 8

Slide 8 text

Эта функция простая? 1 1 1 1 1 1

Slide 9

Slide 9 text

Эта функция простая? 1 1 n*4

Slide 10

Slide 10 text

Эта функция простая? 1 1 n*4 1

Slide 11

Slide 11 text

Эта функция простая? 1 1 n*4 1 + exceptions 1

Slide 12

Slide 12 text

Эта функция простая? 1 1 n*4 1 + exceptions + time 1 1

Slide 13

Slide 13 text

Эта функция простая? 5 + 4n

Slide 14

Slide 14 text

Эта функция простая? Дополнительная проблема: выбор

Slide 15

Slide 15 text

Эта функция простая? При этом, пока так и осталась нерешённой проблема разбора результата. Её решение – это отдельная песня.

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

t Exceptions, Time, Resource management Parameters, Decisions

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Вывод Нужно меньше мячиков

Slide 21

Slide 21 text

Вывод Нужно меньше мячиков и желательно без пил

Slide 22

Slide 22 text

Hasql Абстракция Statement

Slide 23

Slide 23 text

Что мы получаем? ● “Чистая” функция без сторонних эффектов ● Прозрачный, декларативный код ● Нет проблемы времени ● Нет проблемы исключений ● Нет проблемы управления ресурсами

Slide 24

Slide 24 text

Что мы получаем? Завершённая абстракция

Slide 25

Slide 25 text

Что мы получаем? Завершённая абстракция Решения 4 проблем SQL, сериализации, десериализации и кеширования объединяются в единую, в дальнейшем, неделимую сущность, о деталях которой её пользователям уже задумываться не придётся.

Slide 26

Slide 26 text

Что мы получаем? Стимул модулировать код ● В одном модуле находится модель приложения ● В другом – её сериализаторы ● В третьем – десериализаторы ● В четвёртом – стейтменты, которые комбинируют типы и функции из предыдущих трёх ● В пятом модуле – транзакции, комбинируемые из стейтментов

Slide 27

Slide 27 text

Исполнение стейтментов

Slide 28

Slide 28 text

Производительность в сравнении с конкурентами

Slide 29

Slide 29 text

Ссылки ● Репозиторий Hasql: https://github.com/nikita-volkov/hasql ● Мой блог с моими контактами: http://nikita-volkov.github.io/ ● Отличное место для начала изучения Haskell: http://learnyouahaskell.com/chapters