AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)Andrey Gershun
AlaSQL - это библиотека для обработки данных с помощью языка SQL, которая написана на JavaScript и может работать в браузере (в том числе, и в режиме WebWorker) или Node.js. Библиотека может быть использована в приложениях для обработки данных, а также для решения задач ETL (extract-transform-loading), таких как приложения бизнес-аналитики.
AlaSQL позволяет проводить сложные манипуляции с массивами данных (такие как группировки, сортировки, выборки, слияния) с помощью привычных выражений языка SQL. Встроенные процедуры импорта и экспорта данных в различных форматах (включая TXT, JSON, CSV, TSV, Microsoft Excel и Google Spreadsheets) предоставляют удобный интерфейс для импорта и экспорта прямо из SQL-выражений. Библиотека хорошо сочетается с такими современными фреймворками, как Angular.js, d3.js и Google Chars.
AlaSQL поддерживает совместимость по многим операторам со стандартным SQL и различными его диалектами, что позволяет переносить ранее разработанные процедуры для других баз данных. Специальные расширения синтаксиса SQL позволяют простым и удобным способом использовать все возможности, предоставляемые JavaScript, например, обработка JSON объектов из SQL выражений.
Для достижения высокого быстродействия AlaSQL написана с использованием сильно оптимизированного JavaScript и содержит несколько эвристик для сокращения времени обработки SQL выражений.
Проекты становятся глобальными, когда этого никто не ждёт. Проблема перевода возникает не только у переводчиков, но и у инженеров. Разговор об основных трудностях перевода с точки зрения Web разработчика. Усвоенные уроки, инструменты и life hacks.
[2016 데이터 그랜드 컨퍼런스] 5 1(보안,품질). 웨어밸리 data security challenges and its solutio...K data
비용절감 및 클라우드를 통한 각종 효율성을 위해 기존의 인프라에서 구축된 데이터베이스들이 클라우드 환경으로 이관되거나 신규 구축될 때, 데이터베이스 보안 구축도 기존 고객이 직접 운영하는 인프라가 아닌 클라우드 서비스 사업자의 인프라로 이관되며 이에 따른 인프라 환경의 변화와 침해 사고 시 발생할 수 있는 책임소재의 분쟁, 법규의 변화 등 고민할 부분이 많아지게 된다. 따라서, 클라우드 환경에서의 데이터베이스 보안 구축은 클라우드로 데이터를 이관하기 전, 이관하는 단계 그리고 이관 이후에 데이터를 어떻게 보호할 것인가를 다양한 기술적인 측면으로 살펴볼 필요가 있다.
[2016 데이터 그랜드 컨퍼런스] 6 2(전략,솔루션). 큐브리드 오픈소스 dbms의 클라우드 구축 사례-발표자료K data
국내 클라우드 시장 현황은 공공에 의해서 선도되고 있으며 행정자치부의 G클라우드, 서울특별시의 IT Complex센터가 대표적입니다. 민간은 KT, LG, SK, 아마존 웹서비스가 사업을 선도하고 있습니다. 이와 같은 사업트렌드와 오픈소스 클라우드 도입에 따른 장점, 그리고 시장 내 다양한 오픈소스SW를 소개합니다. 또한 CUBRID의 실제 민간 공공 분야 적용사례에 대해서 안내합니다.
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)Andrey Gershun
AlaSQL - это библиотека для обработки данных с помощью языка SQL, которая написана на JavaScript и может работать в браузере (в том числе, и в режиме WebWorker) или Node.js. Библиотека может быть использована в приложениях для обработки данных, а также для решения задач ETL (extract-transform-loading), таких как приложения бизнес-аналитики.
AlaSQL позволяет проводить сложные манипуляции с массивами данных (такие как группировки, сортировки, выборки, слияния) с помощью привычных выражений языка SQL. Встроенные процедуры импорта и экспорта данных в различных форматах (включая TXT, JSON, CSV, TSV, Microsoft Excel и Google Spreadsheets) предоставляют удобный интерфейс для импорта и экспорта прямо из SQL-выражений. Библиотека хорошо сочетается с такими современными фреймворками, как Angular.js, d3.js и Google Chars.
AlaSQL поддерживает совместимость по многим операторам со стандартным SQL и различными его диалектами, что позволяет переносить ранее разработанные процедуры для других баз данных. Специальные расширения синтаксиса SQL позволяют простым и удобным способом использовать все возможности, предоставляемые JavaScript, например, обработка JSON объектов из SQL выражений.
Для достижения высокого быстродействия AlaSQL написана с использованием сильно оптимизированного JavaScript и содержит несколько эвристик для сокращения времени обработки SQL выражений.
Проекты становятся глобальными, когда этого никто не ждёт. Проблема перевода возникает не только у переводчиков, но и у инженеров. Разговор об основных трудностях перевода с точки зрения Web разработчика. Усвоенные уроки, инструменты и life hacks.
[2016 데이터 그랜드 컨퍼런스] 5 1(보안,품질). 웨어밸리 data security challenges and its solutio...K data
비용절감 및 클라우드를 통한 각종 효율성을 위해 기존의 인프라에서 구축된 데이터베이스들이 클라우드 환경으로 이관되거나 신규 구축될 때, 데이터베이스 보안 구축도 기존 고객이 직접 운영하는 인프라가 아닌 클라우드 서비스 사업자의 인프라로 이관되며 이에 따른 인프라 환경의 변화와 침해 사고 시 발생할 수 있는 책임소재의 분쟁, 법규의 변화 등 고민할 부분이 많아지게 된다. 따라서, 클라우드 환경에서의 데이터베이스 보안 구축은 클라우드로 데이터를 이관하기 전, 이관하는 단계 그리고 이관 이후에 데이터를 어떻게 보호할 것인가를 다양한 기술적인 측면으로 살펴볼 필요가 있다.
[2016 데이터 그랜드 컨퍼런스] 6 2(전략,솔루션). 큐브리드 오픈소스 dbms의 클라우드 구축 사례-발표자료K data
국내 클라우드 시장 현황은 공공에 의해서 선도되고 있으며 행정자치부의 G클라우드, 서울특별시의 IT Complex센터가 대표적입니다. 민간은 KT, LG, SK, 아마존 웹서비스가 사업을 선도하고 있습니다. 이와 같은 사업트렌드와 오픈소스 클라우드 도입에 따른 장점, 그리고 시장 내 다양한 오픈소스SW를 소개합니다. 또한 CUBRID의 실제 민간 공공 분야 적용사례에 대해서 안내합니다.
Не все базы данных одинаково полезны. Сергей Аверин, Badoo.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются раз- работчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
• Зачастую в стартапе изначально проектируется архитектура вокруг БД, рассчитанная на огромные нагрузки, на большое масштабирование, ко- торые потом в реальной жизни никогда не понадобится.
• Или проектируется архитектура, которая якобы дает отказоустойчи- вость, но при этом проблемы нижних уровней абстракции во внимание не принимаются.
• При выборе основной БД для проекта выбирается БД, которая не дает большого запаса фич в будущем, появляется дороговизна и сложность изменения.
• Используйте инструменты, которые вы хорошо изучили. «Психологиче- ская» популярность NoSQL. Достоинства и недостатки SQL и NoSQL БД.
• Проблемы использования БД как хранилища/движка обработки собы- тий зачастую не оправдано. Альтернативы.
• Использование БД для поиска, плюсы и минусы.
• Eventual consistency рулит, и как из этого можно извлечь пользу.
Целевая аудитория:
Доклад будет интересен веб-разработчикам, особенно из стартапов и неболь- ших команд, техническим руководителям.
Не все базы данных одинаково полезны. Сергей Аверин, Badoo.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются разработчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
О компании:
Badoo — не только самая большая, но и одна из самых инновационных и высокотехнологичных компаний в сфере социальных сетей, входящий в топ-100 крупнейших мировых проектов. Она насчитывает 139 миллионов пользователей, и еще более чем 100,000 новых пользователей присоединяются к ней каждый день.
Badoo — это глобальная социальная онлайн-система, которая дает возможность знакомиться с новыми людьми, живущими пососедству и по всему миру. Мы предлагаем многочисленные технические возможности социальных сетей, делая акцент на играх и сервисах, позволяющих расширить социальный круг. Мы продолжаем расширять географию своего пребывания и использовать самые последние технологии в сетевом общении, позволяющие нашим пользователям знакомиться друг с другом и изменять реальность вокруг себя.
Видеоприглашение на конференцию:
http://www.youtube.com/watch?v=2mRGcz0UODY
Не все базы данных одинаково полезны. Сергей Аверин, Badoo.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются раз- работчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
• Зачастую в стартапе изначально проектируется архитектура вокруг БД, рассчитанная на огромные нагрузки, на большое масштабирование, ко- торые потом в реальной жизни никогда не понадобится.
• Или проектируется архитектура, которая якобы дает отказоустойчи- вость, но при этом проблемы нижних уровней абстракции во внимание не принимаются.
• При выборе основной БД для проекта выбирается БД, которая не дает большого запаса фич в будущем, появляется дороговизна и сложность изменения.
• Используйте инструменты, которые вы хорошо изучили. «Психологиче- ская» популярность NoSQL. Достоинства и недостатки SQL и NoSQL БД.
• Проблемы использования БД как хранилища/движка обработки собы- тий зачастую не оправдано. Альтернативы.
• Использование БД для поиска, плюсы и минусы.
• Eventual consistency рулит, и как из этого можно извлечь пользу.
Целевая аудитория:
Доклад будет интересен веб-разработчикам, особенно из стартапов и неболь- ших команд, техническим руководителям.
Не все базы данных одинаково полезны. Сергей Аверин, Badoo.
Выбор хранилища данных — сложная задача, с которой часто сталкиваются разработчики. Чаще всего результат этого выбора — это компромисс. Я расскажу о собственном опыте, набитых «шишках», рассмотрю важные, на мой взгляд, связанные с этой задачей проблемы.
О компании:
Badoo — не только самая большая, но и одна из самых инновационных и высокотехнологичных компаний в сфере социальных сетей, входящий в топ-100 крупнейших мировых проектов. Она насчитывает 139 миллионов пользователей, и еще более чем 100,000 новых пользователей присоединяются к ней каждый день.
Badoo — это глобальная социальная онлайн-система, которая дает возможность знакомиться с новыми людьми, живущими пососедству и по всему миру. Мы предлагаем многочисленные технические возможности социальных сетей, делая акцент на играх и сервисах, позволяющих расширить социальный круг. Мы продолжаем расширять географию своего пребывания и использовать самые последние технологии в сетевом общении, позволяющие нашим пользователям знакомиться друг с другом и изменять реальность вокруг себя.
Видеоприглашение на конференцию:
http://www.youtube.com/watch?v=2mRGcz0UODY
2. Древовидная структура в PostgreSQL. SQL CommonДревовидная структура в PostgreSQL. SQL Common
Table ExpressionTable Expression
(Алексей Кутепов, (Алексей Кутепов, Revel Systems iPad POSRevel Systems iPad POS))
7. WITH Queries. Common Table Expression (CTE)
•
В стандарте SQL-99
•
Поддеживается PosgreSQL, Oracle 11g, Microsoft SQL
Server, …
•
Не поддерживается MySQL, SQLLite
•
CTE вводит вспомогательный statement, который
можно представить как временную таблицу, которая
существует только для одного, последующего сразу за
ним запроса.
8. •
WITH RECURSIVE - Using RECURSIVE, a WITH query can refer to
its own output.
WITH RECURSIVE t(n) AS (
VALUES (1)
UNION ALL
SELECT n+1 FROM t WHERE n < 100
)
SELECT sum(n) FROM t;
“Note: Strictly speaking, this process is iteration not recursion,
but RECURSIVE is the terminology chosen by the SQL standards
committee.”
9. Свойства Adjacency List:
•
Легко получать поддерево используя CTE
WITH RECURSIVE resources_cte_tree(id, parent_id, name, depth) AS (
SELECT *, 0 AS depth FROM resources WHERE parent_id = 5
UNION ALL
SELECT r.*, rct.depth+1 AS depth FROM resources_cte_tree rct
JOIN resources ON (rct.id = resources.id)
)
SELECT * FROM resources_cte_tree;
11. Свойства Path Enumeration (Breadcrumbs thumbsup):
•
Легко вставлять элементы.
•
Легко получать непосредственных потомков/предков
•
Легко получать поддерево
•
Затратно перемещать поддерево
SELECT * FROM resources r_left LEFT JOIN resources r_right
ON (r_left.id = r_right.parent);
SELECT * FROM resources WHERE path LIKE ‘/room/1/%’;
INSERT INTO resources (name) VALUES (‘Rack ’) RETURNING id;
SELECT path as parent_path FROM resources WHERE id = 1;
UPDATE resources SET path = parent_path || ‘/’ || id;
12. Nested Sets
•
Каждый ресурс «кодирует» свои дочерние ресурсы 2
ключами-числами:
•
«Левое» число ресурса всегда меньше чем левое число его
потомков
•
«Правое» число ресурса всегда больше, чем «правое» число
его потомков
14. •
Nested Sets
id left_key right_key name
1 1 12 Room 1
2 2 7 Server 1
3 8 11 Server 2
4 3 4 Cluster 1
5 5 6 Cluster 2
6 9 10 Cluster 3
15. Свойства Nested Sets:
●
Легко получать поддерево потомков/предков
●
Трудно получить непосредственных предков/потомков (рецепт –
добавить поле parent_id и/или depth)
●
Трудно вставлять элемент
●
Трудно перемещать дерево
●
Можно хранить только одно дерево в одной таблице
SELECT id, name FROM resources WHERE left_key >= $left_key AND right_key
<= $right_key ORDER BY left_key
SELECT id, name, level FROM resources WHERE left_key
<= $left_key ANDright_key >= $right_key ORDER BY left_key
17. Свойства Closure Table
•
Легко запрашивать прямых потомков/предков
•
Легко вставлять новые элементы
•
Легко удалять элементы
•
Трудно запрашивать поддерево
SELECT r.* FROM resources r JOIN resources_tree t ON (r.id = t.child_id)
WHERE r.id = 1;
SELECT r.* FROM resources r JOIN resources_tree t ON (r.id = t.parent_id)
WHERE r.id = 1;
INSERT INTO resources (name) VALUES (‘Room 3’) RETURNING id;
INSERT INTO resources_tree (parent_id, child_id) VALUES (NULL, id);
DELETE FROM resources_tree WHERE parent_id = 1;
DELETE FROM resources WHERE id = 1;
19. Запрос прямых
потомков
Запрос
поддерева
Вставка нового
элемента
Изменение
поддерева
Adjacency List Легко Трудно* Легко Трудно
Path Enumeration Легко Легко Легко Трудно
Nested Sets Трудно** Легко Трудно Трудно
Closure Table Легко Трудно*** Легко Легко
* Легко, при использовании SQL CTE
** Легко, при введении полей parent_id и/или depth
*** Легко, при использовании SQL CTE, либо при добавлении ссылок к каждому потомку (не
всегда возможно)
20. Hierarchical and recursive queries in SQL
CONNECT BY is supported by EnterpriseDB,
Oracle database, CUBRID, IBM Informix
and DB2
21. Informative links:
Slides by Bill Karwin (of course):
http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back/
http://www.slideshare.net/billkarwin/models-for-hierarchical-data
Nested Sets:
http://www.getinfo.ru/article610.html
Closure Table:
https://habrahabr.ru/post/263629/
https://
en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL