GraphQL is a new black, a hype over the Internet with a very few real-life examples of how to use it in big in-house projects. Id like to show the real example of GraphQL Evolution from a small mobile API to a cross-services integration in a high-load Python project that took us 3 years to develop.
Description:
Intro to GraphQL in the Python world.
Step-by-step GraphQL evolution in a big high-load python project:
Step 1. Mobile App API with GraphQL
Step 2. Separate Frontend from Backend in high-load python project using GraphQL
Step 3. Graph services as Proxy via different Graph APIs
Step 4. Replace SqlAlchemy models via Graph
Step 5. Mutations in Graph API
Step 6. A brave new world with GraphQL
For every step, I will provide real examples (metrics, graphics, numbers), problems and solutions that we had during the years 2015 - 2019.
The document describes a Java EE sample application called a pet catalog that allows users to view a list of pet items and their details. It uses JSF components and managed beans to bind the UI to entities and session beans, and shows how navigation between pages is handled through backing bean methods. Key aspects covered include the model, controller, JSF lifecycle, and use of managed properties, commands, and resources to display data and navigate between pages.
Introduction to interactive data visualisation using R Shinyanamarisaguedes
油
Shiny is an R library for building interactive webapps. Shiny allows rapid prototyping and quick production of dashboards and interactive data visualisations. This is especially important in situations where putting a real data-driven prototype in the hands of the end user allows for better refining of requirements before passing off to a web development team. This allows to speed up the delivery process and reducing the dependencies on other teams.
Code and solution to exercises available on github: https://github.com/amguedes/ShinySeminar
Dynamic Data is an ASP.Net feature that allows easy creation of data-driven websites by automatically generating pages and user interfaces based on a data model. It infers the UI from metadata on the data model using LINQ to SQL or Entity Framework. Pages are generated dynamically using page and field templates. Customization is possible through custom page templates and field templates. A Dynamic Data Wizard is in development to further streamline website creation but is currently in beta.
The document discusses the architecture of an iOS application using reactive programming principles. It outlines the common layers of an application including the transport, service, model, view model and view layers. It then shows how each layer can be implemented using the ReactiveCocoa framework by turning components into signals and streams that can be combined, transformed and manipulated. Key concepts discussed include actions, signals, signal producers, operators like map and flatMap, and presenting values to the view layer.
This document discusses generating custom documents from Salesforce data. It covers exporting record pages, reports, and spreadsheets to PDF and ZIP files from Apex and Lightning components. The agenda includes dynamic data export with PDF, accessing exports from Apex/Lightning, and packing files into scalable ZIP archives. Code samples demonstrate rendering record pages and reports to PDF using Visualforce and Apex.
This document discusses GraphQL and its advantages over traditional REST APIs. It summarizes how GraphQL works, including defining object types and fields, writing queries and mutations, and implementing GraphQL with the graphql-php library. It also covers challenges like the N+1 problem and solutions like deferred resolvers. Overall the document provides an introduction to GraphQL concepts and how it can be used to build APIs.
Tutorial: Building a GraphQL API in PHPAndrew Rota
油
This document discusses building a GraphQL API in PHP. It provides an overview of GraphQL concepts like queries, fields, types and schemas. It then outlines the steps to build a GraphQL API in PHP using the graphql-php library:
1. Define object types and the Query root type in the schema
2. Initialize the GraphQL schema instance
3. Execute GraphQL queries against the schema and return the result
By following these steps, one can build an API for querying a database of PHP conferences and speakers to understand how to build GraphQL APIs in PHP.
It is a talk given by Vivian Zhang, CTO of SupStat Inc which is a leading Data Analytic consulting firm based in New York City, Shanghai and Beijing. NYC Open Data meetup are honored to host this event on Mar 24th,2014. You can find more information at www.meetup.com/nyc-open-data and www.nycopendata.com
This document outlines an agenda for introducing Recoil, a state management library for React. It will include meeting the audience, discussing state management options, hearing from a project owner, learning Recoil basics through a live demo of building a map application, and answering questions. Key features that will be demonstrated include sharing local component state through Recoil atoms, derived data with selectors, asynchronous data, and state persistence. The presenter argues that Recoil is worth considering if an application requires more than Context can handle and is not afraid of experimental APIs.
This document discusses building a GraphQL API in PHP. It introduces GraphQL concepts like queries, fields, arguments, types and schemas. It covers implementing GraphQL on both the client and server side. On the client, queries are made to request data from a GraphQL server. On the server, the schema defines query structure and resolver functions return data. Tools like introspection, GraphiQL and Voyager enable exploration and debugging of GraphQL APIs.
Excel continues to be the scratchpad for data analysis everywhere, and with new capabilities for JavaScript-based functions and connections to ML based models, you can bring in all of the power of your data analysis tools right inline to your formulas.
Performant APIs with GraphQL and PHP (Dutch PHP 2019)Andrew Rota
油
This document summarizes an presentation about building performant APIs with GraphQL and PHP. The presentation introduces GraphQL concepts like queries, fields, arguments, variables, types and schemas. It discusses how GraphQL can help address challenges with traditional REST APIs like over-fetching or under-fetching data. The document also provides an overview of building a GraphQL server in PHP using the webonyx/graphql-php library and implementing resolvers to fetch data and return object types.
A brief run through of the various APIs Google offers for creating free interactive and static data visualizations.
Links mentioned in this presentation: http://dev.kingkool68.com/google-charting-api/list-o-links.html
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)Kanika Garg
油
This document introduces Google Chart Tools, which allows users to create interactive charts and maps from various data sources. It has several advantages, including customization to fit website designs, cross-browser compatibility, and connection to real-time dynamic data. The tool uses HTML5/SVG technology and has a library of chart types. Charts can be created by loading libraries, populating data tables from sources, customizing options, and drawing the chart. Various chart types are demonstrated, including area, bar, gauge, geo, table, tree, combo, line, scatter, candlestick, and organizational charts. Examples show how to query external data and customize visualizations.
Integrating React.js Into a PHP Application: Dutch PHP 2019Andrew Rota
油
This document discusses integrating React.js into a PHP application. It provides an overview of React.js and its benefits for building user interfaces. It then covers different approaches to server-side rendering (SSR) with React in a PHP application, including using the V8Js PHP extension to run JavaScript, making requests from PHP to a Node.js service, and making requests from Node.js to PHP. It emphasizes that React.js and PHP can complement each other and discusses frameworks like Next.js that support SSR. The key takeaways are that React.js can enhance PHP applications, there are different SSR architectures to integrate them, and giving React.js a try can help modernize app views.
How to separate frontend from a highload python project with no problems - Py...Oleksandr Tarasenko
油
Everybody knows that it is hard to scale old highload monolithic projects that use pythonic templates for frontend. I am gonna tell how we transformed our product using trending and proper technologies like GraphQL, Apollo, Node.js with limited developer resources in a short period of time.
Now many developers (not all) have a tendency to use a number of technologies, not understanding how they work and which problems they solve and which ones they create. The talk will be devoted to a review of libraries in Python, which help us work with databases, namely, effectively receive data.
I will try to tell and answer the following questions:
why is it sometimes worth writing RAW SQL;
when it is worth paying attention to ORM, in particular, their advantages and differences;
where and how ORM will be slower, and where there will be no difference;
how and what ORMs can work in asynchronous mode;
what does GraphQL have to do with it and how can it help.
The document discusses Prisma and GraphQL. It provides an overview of GraphQL concepts like schema, queries, and resolvers. It then covers the typical architecture of a GraphQL server including the schema definition, resolver functions, and server setup. Finally, it introduces Prisma as a database access layer that can be used to build GraphQL servers.
GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...Noriaki Tatsumi
油
In this talk, youll learn about techniques used to build a scalable GraphQL based data gateway with the capability to dynamically on-board various new data sources. They include runtime schema evolution and resolver wiring, abstract resolvers, auto GraphQL schema generation from other schema types, and construction of appropriate cache key-values.
Simplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) ExtensionVMware Tanzu
油
This document discusses Geode GraphQL Extension (G2QL), which allows a Geode cache to be accessed via GraphQL queries and mutations. G2QL introspects a Geode cache configuration and generates a corresponding GraphQL schema. It converts GraphQL queries and mutations to Geode region operations and OQL, eliminating the need to write resolvers. G2QL addresses issues like schema duplication, boilerplate code, and inefficient data access through features like schema generation, automatic conversion of queries to Geode operations, and batching of queries. The document provides an example of G2QL in action and discusses next steps for the project.
Nikita Galkin "Looking for the right tech stack for GraphQL application"Fwdays
油
The document discusses best practices and challenges for building GraphQL applications. It recommends using tools like TypeScript, TypeORM, and TypeGraphQL to generate schemas from database models to avoid duplication. It also suggests using DataLoader to optimize requests, implementing pagination on the data layer, and using info and context parameters to only select needed fields. The document covers other topics like authorization, versioning, testing, and avoiding overfetching with info.
Google App Engine in 40 minutes (the absolute essentials)Python Ireland
油
This talk covers just the stuff needed to get you up-to-speed with Google App Engine and its associated technologies (based on the Python run-time, of course). In addition to a bit of talking, Paul will also demo a working webapp built and deployed on the App Engine cloud... all in 40 minutes.
GraphQL meets Elixir provides an introduction to using GraphQL in Elixir and Vue.js projects. It discusses what GraphQL is and how it allows applications to talk to backend services as if they were a database. It then demonstrates setting up a GraphQL schema and types in Absinthe, defining queries and mutations, implementing object types and input types, adding authorization middleware, and checking permissions in resolvers.
This document provides details on developing a website for an automotive industry client using technologies like PHP, MySQL, HTML, CSS, JavaScript, AngularJS. It includes implementation of pie charts and bar graphs to visualize discrete data from a MySQL database. Responsive design and search/sort filters using AngularJS are also implemented. The website would have pages for Home, Services, Analysis, Clients, and Contact Us.
Managing GraphQL servers with AWS Fargate & Prisma CloudNikolas Burk
油
The document discusses managing GraphQL servers with AWS Fargate and Prisma Cloud. It begins with introductions to GraphQL and the core mechanics of a GraphQL server, including the schema, resolver functions, and setup. It then demonstrates building GraphQL servers with Prisma, and managing them using AWS Fargate and the Prisma Cloud service, which provides workflows for server management. Live demonstrations are included.
Bill Kidwell took us through his recent experiences creating a GraphQL API using AWS Appsync and AWS Amplify. He covered data model and data access patterns. And updating the GraphQL schema using Appsyncs custom annotations. The result was a DynamoDB backed GraphQL API. He even discussed more complex use cases too.
This was a great topic to share at KYJSUG
It is a talk given by Vivian Zhang, CTO of SupStat Inc which is a leading Data Analytic consulting firm based in New York City, Shanghai and Beijing. NYC Open Data meetup are honored to host this event on Mar 24th,2014. You can find more information at www.meetup.com/nyc-open-data and www.nycopendata.com
This document outlines an agenda for introducing Recoil, a state management library for React. It will include meeting the audience, discussing state management options, hearing from a project owner, learning Recoil basics through a live demo of building a map application, and answering questions. Key features that will be demonstrated include sharing local component state through Recoil atoms, derived data with selectors, asynchronous data, and state persistence. The presenter argues that Recoil is worth considering if an application requires more than Context can handle and is not afraid of experimental APIs.
This document discusses building a GraphQL API in PHP. It introduces GraphQL concepts like queries, fields, arguments, types and schemas. It covers implementing GraphQL on both the client and server side. On the client, queries are made to request data from a GraphQL server. On the server, the schema defines query structure and resolver functions return data. Tools like introspection, GraphiQL and Voyager enable exploration and debugging of GraphQL APIs.
Excel continues to be the scratchpad for data analysis everywhere, and with new capabilities for JavaScript-based functions and connections to ML based models, you can bring in all of the power of your data analysis tools right inline to your formulas.
Performant APIs with GraphQL and PHP (Dutch PHP 2019)Andrew Rota
油
This document summarizes an presentation about building performant APIs with GraphQL and PHP. The presentation introduces GraphQL concepts like queries, fields, arguments, variables, types and schemas. It discusses how GraphQL can help address challenges with traditional REST APIs like over-fetching or under-fetching data. The document also provides an overview of building a GraphQL server in PHP using the webonyx/graphql-php library and implementing resolvers to fetch data and return object types.
A brief run through of the various APIs Google offers for creating free interactive and static data visualizations.
Links mentioned in this presentation: http://dev.kingkool68.com/google-charting-api/list-o-links.html
Google Chart Tools Kanika Garg (10BM60035) Lavanya R. (10BM60042)Kanika Garg
油
This document introduces Google Chart Tools, which allows users to create interactive charts and maps from various data sources. It has several advantages, including customization to fit website designs, cross-browser compatibility, and connection to real-time dynamic data. The tool uses HTML5/SVG technology and has a library of chart types. Charts can be created by loading libraries, populating data tables from sources, customizing options, and drawing the chart. Various chart types are demonstrated, including area, bar, gauge, geo, table, tree, combo, line, scatter, candlestick, and organizational charts. Examples show how to query external data and customize visualizations.
Integrating React.js Into a PHP Application: Dutch PHP 2019Andrew Rota
油
This document discusses integrating React.js into a PHP application. It provides an overview of React.js and its benefits for building user interfaces. It then covers different approaches to server-side rendering (SSR) with React in a PHP application, including using the V8Js PHP extension to run JavaScript, making requests from PHP to a Node.js service, and making requests from Node.js to PHP. It emphasizes that React.js and PHP can complement each other and discusses frameworks like Next.js that support SSR. The key takeaways are that React.js can enhance PHP applications, there are different SSR architectures to integrate them, and giving React.js a try can help modernize app views.
How to separate frontend from a highload python project with no problems - Py...Oleksandr Tarasenko
油
Everybody knows that it is hard to scale old highload monolithic projects that use pythonic templates for frontend. I am gonna tell how we transformed our product using trending and proper technologies like GraphQL, Apollo, Node.js with limited developer resources in a short period of time.
Now many developers (not all) have a tendency to use a number of technologies, not understanding how they work and which problems they solve and which ones they create. The talk will be devoted to a review of libraries in Python, which help us work with databases, namely, effectively receive data.
I will try to tell and answer the following questions:
why is it sometimes worth writing RAW SQL;
when it is worth paying attention to ORM, in particular, their advantages and differences;
where and how ORM will be slower, and where there will be no difference;
how and what ORMs can work in asynchronous mode;
what does GraphQL have to do with it and how can it help.
The document discusses Prisma and GraphQL. It provides an overview of GraphQL concepts like schema, queries, and resolvers. It then covers the typical architecture of a GraphQL server including the schema definition, resolver functions, and server setup. Finally, it introduces Prisma as a database access layer that can be used to build GraphQL servers.
GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...Noriaki Tatsumi
油
In this talk, youll learn about techniques used to build a scalable GraphQL based data gateway with the capability to dynamically on-board various new data sources. They include runtime schema evolution and resolver wiring, abstract resolvers, auto GraphQL schema generation from other schema types, and construction of appropriate cache key-values.
Simplify Access to Data from Pivotal GemFire Using the GraphQL (G2QL) ExtensionVMware Tanzu
油
This document discusses Geode GraphQL Extension (G2QL), which allows a Geode cache to be accessed via GraphQL queries and mutations. G2QL introspects a Geode cache configuration and generates a corresponding GraphQL schema. It converts GraphQL queries and mutations to Geode region operations and OQL, eliminating the need to write resolvers. G2QL addresses issues like schema duplication, boilerplate code, and inefficient data access through features like schema generation, automatic conversion of queries to Geode operations, and batching of queries. The document provides an example of G2QL in action and discusses next steps for the project.
Nikita Galkin "Looking for the right tech stack for GraphQL application"Fwdays
油
The document discusses best practices and challenges for building GraphQL applications. It recommends using tools like TypeScript, TypeORM, and TypeGraphQL to generate schemas from database models to avoid duplication. It also suggests using DataLoader to optimize requests, implementing pagination on the data layer, and using info and context parameters to only select needed fields. The document covers other topics like authorization, versioning, testing, and avoiding overfetching with info.
Google App Engine in 40 minutes (the absolute essentials)Python Ireland
油
This talk covers just the stuff needed to get you up-to-speed with Google App Engine and its associated technologies (based on the Python run-time, of course). In addition to a bit of talking, Paul will also demo a working webapp built and deployed on the App Engine cloud... all in 40 minutes.
GraphQL meets Elixir provides an introduction to using GraphQL in Elixir and Vue.js projects. It discusses what GraphQL is and how it allows applications to talk to backend services as if they were a database. It then demonstrates setting up a GraphQL schema and types in Absinthe, defining queries and mutations, implementing object types and input types, adding authorization middleware, and checking permissions in resolvers.
This document provides details on developing a website for an automotive industry client using technologies like PHP, MySQL, HTML, CSS, JavaScript, AngularJS. It includes implementation of pie charts and bar graphs to visualize discrete data from a MySQL database. Responsive design and search/sort filters using AngularJS are also implemented. The website would have pages for Home, Services, Analysis, Clients, and Contact Us.
Managing GraphQL servers with AWS Fargate & Prisma CloudNikolas Burk
油
The document discusses managing GraphQL servers with AWS Fargate and Prisma Cloud. It begins with introductions to GraphQL and the core mechanics of a GraphQL server, including the schema, resolver functions, and setup. It then demonstrates building GraphQL servers with Prisma, and managing them using AWS Fargate and the Prisma Cloud service, which provides workflows for server management. Live demonstrations are included.
Bill Kidwell took us through his recent experiences creating a GraphQL API using AWS Appsync and AWS Amplify. He covered data model and data access patterns. And updating the GraphQL schema using Appsyncs custom annotations. The result was a DynamoDB backed GraphQL API. He even discussed more complex use cases too.
This was a great topic to share at KYJSUG
Architecture for scalable Angular applications (with introduction and extende...Pawe 纏urowski
油
Architecture for applications that scales. It uses redux pattern and ngrx implementation with effects and store.
It's refreshed (but still 2+) presentation from my inner talk for colegues.
It's refreshed again and extended by quick and dirty introduction to Angular with verbose example.
VMWorld 2017 Hackathon training: Getting Started with ClarityJeeyun Lim
油
The document introduces Clarity, an open source design system from VMware that provides UI components, design guidelines and tools to help designers and developers build better experiences. It discusses Clarity's goals and growth since being released publicly in 2016. The remainder of the document demonstrates building an Angular application using Clarity components, including creating components, routing, retrieving data from an API using HTTP calls and services, displaying data in a datagrid with pagination and selection functionality.
This document discusses the ql.io open source project, which provides a domain specific language (DSL) for making HTTP requests. The DSL allows HTTP resources to be treated like database tables, enabling CRUD operations on those resources with a SQL-like syntax. Ql.io can be used as an HTTP gateway and allows parallelizing and joining requests. It aims to simplify writing code for making API calls. The document provides examples of using the ql.io DSL and discusses how it can be used as a Node.js module.
This document discusses GraphQL and DGraph with GO. It begins by introducing GraphQL and some popular GraphQL implementations in GO like graphql-go. It then discusses DGraph, describing it as a distributed, high performance graph database written in GO. It provides examples of using the DGraph GO client to perform CRUD operations, querying for single and multiple objects, committing transactions, and more.
Indian Soil Classification System in Geotechnical EngineeringRajani Vyawahare
油
This PowerPoint presentation provides a comprehensive overview of the Indian Soil Classification System, widely used in geotechnical engineering for identifying and categorizing soils based on their properties. It covers essential aspects such as particle size distribution, sieve analysis, and Atterberg consistency limits, which play a crucial role in determining soil behavior for construction and foundation design. The presentation explains the classification of soil based on particle size, including gravel, sand, silt, and clay, and details the sieve analysis experiment used to determine grain size distribution. Additionally, it explores the Atterberg consistency limits, such as the liquid limit, plastic limit, and shrinkage limit, along with a plasticity chart to assess soil plasticity and its impact on engineering applications. Furthermore, it discusses the Indian Standard Soil Classification (IS 1498:1970) and its significance in construction, along with a comparison to the Unified Soil Classification System (USCS). With detailed explanations, graphs, charts, and practical applications, this presentation serves as a valuable resource for students, civil engineers, and researchers in the field of geotechnical engineering.
Preface: The ReGenX Generator innovation operates with a US Patented Frequency Dependent Load Current Delay which delays the creation and storage of created Electromagnetic Field Energy around the exterior of the generator coil. The result is the created and Time Delayed Electromagnetic Field Energy performs any magnitude of Positive Electro-Mechanical Work at infinite efficiency on the generator's Rotating Magnetic Field, increasing its Kinetic Energy and increasing the Kinetic Energy of an EV or ICE Vehicle to any magnitude without requiring any Externally Supplied Input Energy. In Electricity Generation applications the ReGenX Generator innovation now allows all electricity to be generated at infinite efficiency requiring zero Input Energy, zero Input Energy Cost, while producing zero Greenhouse Gas Emissions, zero Air Pollution and zero Nuclear Waste during the Electricity Generation Phase. In Electric Motor operation the ReGen-X Quantum Motor now allows any magnitude of Work to be performed with zero Electric Input Energy.
Demonstration Protocol: The demonstration protocol involves three prototypes;
1. Protytpe #1, demonstrates the ReGenX Generator's Load Current Time Delay when compared to the instantaneous Load Current Sine Wave for a Conventional Generator Coil.
2. In the Conventional Faraday Generator operation the created Electromagnetic Field Energy performs Negative Work at infinite efficiency and it reduces the Kinetic Energy of the system.
3. The Magnitude of the Negative Work / System Kinetic Energy Reduction (in Joules) is equal to the Magnitude of the created Electromagnetic Field Energy (also in Joules).
4. When the Conventional Faraday Generator is placed On-Load, Negative Work is performed and the speed of the system decreases according to Lenz's Law of Induction.
5. In order to maintain the System Speed and the Electric Power magnitude to the Loads, additional Input Power must be supplied to the Prime Mover and additional Mechanical Input Power must be supplied to the Generator's Drive Shaft.
6. For example, if 100 Watts of Electric Power is delivered to the Load by the Faraday Generator, an additional >100 Watts of Mechanical Input Power must be supplied to the Generator's Drive Shaft by the Prime Mover.
7. If 1 MW of Electric Power is delivered to the Load by the Faraday Generator, an additional >1 MW Watts of Mechanical Input Power must be supplied to the Generator's Drive Shaft by the Prime Mover.
8. Generally speaking the ratio is 2 Watts of Mechanical Input Power to every 1 Watt of Electric Output Power generated.
9. The increase in Drive Shaft Mechanical Input Power is provided by the Prime Mover and the Input Energy Source which powers the Prime Mover.
10. In the Heins ReGenX Generator operation the created and Time Delayed Electromagnetic Field Energy performs Positive Work at infinite efficiency and it increases the Kinetic Energy of the system.
How to Build a Maze Solving Robot Using ArduinoCircuitDigest
油
Learn how to make an Arduino-powered robot that can navigate mazes on its own using IR sensors and "Hand on the wall" algorithm.
This step-by-step guide will show you how to build your own maze-solving robot using Arduino UNO, three IR sensors, and basic components that you can easily find in your local electronics shop.
This presentation provides an in-depth analysis of structural quality control in the KRP 401600 section of the Copper Processing Plant-3 (MOF-3) in Uzbekistan. As a Structural QA/QC Inspector, I have identified critical welding defects, alignment issues, bolting problems, and joint fit-up concerns.
Key topics covered:
Common Structural Defects Welding porosity, misalignment, bolting errors, and more.
Root Cause Analysis Understanding why these defects occur.
Corrective & Preventive Actions Effective solutions to improve quality.
Team Responsibilities Roles of supervisors, welders, fitters, and QC inspectors.
Inspection & Quality Control Enhancements Advanced techniques for defect detection.
Applicable Standards: GOST, KMK, SNK Ensuring compliance with international quality benchmarks.
This presentation is a must-watch for:
QA/QC Inspectors, Structural Engineers, Welding Inspectors, and Project Managers in the construction & oil & gas industries.
Professionals looking to improve quality control processes in large-scale industrial projects.
Download & share your thoughts! Let's discuss best practices for enhancing structural integrity in industrial projects.
Categories:
Engineering
Construction
Quality Control
Welding Inspection
Project Management
Tags:
#QAQC #StructuralInspection #WeldingDefects #BoltingIssues #ConstructionQuality #Engineering #GOSTStandards #WeldingInspection #QualityControl #ProjectManagement #MOF3 #CopperProcessing #StructuralEngineering #NDT #OilAndGas
Were excited to share our product profile, showcasing our expertise in Industrial Valves, Instrumentation, and Hydraulic & Pneumatic Solutions.
We also supply API-approved valves from globally trusted brands, ensuring top-notch quality and internationally certified solutions. Lets explore valuable business opportunities together!
We specialize in:
Industrial Valves (Gate, Globe, Ball, Butterfly, Check)
Instrumentation (Pressure Gauges, Transmitters, Flow Meters)
Pneumatic Products (Cylinders, Solenoid Valves, Fittings)
As authorized partners of trusted global brands, we deliver high-quality solutions tailored to meet your industrial needs with seamless support.
UNIT 1FUNDAMENTALS OF OPERATING SYSTEMS.pptxKesavanT10
油
How to grow GraphQL and remove SQLAlchemy and REST API from a high-load Python project - Pycon Belarus 2019
1. How to grow GraphQL and
remove SQLAlchemy and REST
API from a high-load Python
project
Oleksandr Tarasenko
EVO.company / prom.ua
2. Some of prom.ua numbers
RPS 2500-3500
total sites over 300 000
products ~ 150 million
pages ~ 400 million
2
3. What we had
monolithic WSGI app (11 years)
mako templates
monolithic database
monolithic Nginx
poor REST API for all sub-services
slow Delivery and Deployment
new features were hard to develop
3
8. GraphQL concept in prom.ua
new client-proposal paradigm
good for read-only requests and data
two-level (x-level) graph:
low-level graph for database mapping (data
loading)
high-level graph for business logic
auto documentation and easy testing with
graphiql tool
data validation 8
9. 9
Step 1. Mobile App API with GraphQL
Step 2. Separating Frontend from Backend
Step 3. Graph services as Proxy via different Graph APIs
Step 4. Replace SQLAlchemy models logic via Graph
Step 5. Mutations in Graph API
Step 6. A brave new world with GraphQL
10. Why we choose GraphQL
good for read-only requests and data
no mutations needed
hard to update REST API versions (v1, v2,...vn)
auto generated documentation
new client-proposal paradigm
difficult routes
10
12. from hiku.graph import Graph, Node, Link, Field, ...
from hiku.sources import sqlalchemy as sa
from hiku.types import Boolean, Integer, String, TypeRef, ...
product_query = sa.FieldsQuery('db.session', Product.__table__)
low_level_graph = Graph([
Node('Product', [
Field('id', Integer, product_query),
Field('name', String, product_query),
Field('price', None, product_query),
...
])
12
13. from hiku.graph import Graph, Node, Link, Field
from hiku.sources import sqlalchemy as sa
from hiku.types import Boolean, Integer, String, TypeRef
product_query = sa.FieldsQuery('db.session', Product.__table__)
low_level_graph = Graph([
Node('Product', [
Field('id', Integer, product_query),
Field('name', String, product_query),
Field('price', None, product_query),
...
])
13
14. from hiku.graph import Graph, Node, Link, Field
from hiku.sources import sqlalchemy as sa
from hiku.types import Boolean, Integer, String, TypeRef
product_query = sa.FieldsQuery('db.session', Product.__table__)
low_level_graph = Graph([
Node('Product', [
Field('id', Integer, product_query),
Field('name', String, product_query),
Field('price', None, product_query),
...
])
14
15. 15
Step 1. Mobile App API with GraphQL
Step 2. Separating Frontend from Backend
Step 3. Graph services as Proxy via different Graph APIs
Step 4. Replace SQLAlchemy models logic via Graph
Step 5. Mutations in Graph API
Step 6. A brave new world with GraphQL
16. 2017
hiku upgrade to native GraphQL
new site 2nd level graph
reimplementing mobile sites
SSR Node.js Apollo Client
success story with metrics
16
26. Some of the numbers of the new scheme
node.js workers 3-6 per front
React render 5 ms
prom.ua workers over 750
number of requests split to node/python
26
27. 27
Step 1. Mobile App API with GraphQL
Step 2. Separating Frontend from Backend
Step 3. Graph services as Proxy via
different Graph APIs
Step 4. Replace SQLAlchemy models logic via Graph
Step 5. Mutations in Graph API
Step 6. A brave new world with GraphQL
28. Early 2018
new order and shopping cart graphs
new user cabinet
Node.js and apollo for stitching two
graphs
REST API under GraphQL
28
31. 31
Step 1. Mobile App API with GraphQL
Step 2. Separating Frontend from Backend
Step 3. Graph services as Proxy via different Graph APIs
Step 4. Replace SQLAlchemy models
logic via Graph
Step 5. Mutations in Graph API
Step 6. A brave new world with GraphQL
32. Middle 2018
Hiku upgrade to aliases and new data types
Use SSR + GraphQL for portal mobile version
Graph for replace SQLAlchemy models logic
and queries
Rewriting sites SQL queries to GraphQL
Remove Models from BL
https://hiku.readthedocs.io/
32
53. Mobile API average across all queries:
383 ms -> 323 ms 15%
Catalog Graph API average across all queries:
82 ms -> 62 ms 25%
Site Graph Api average across all queries
121 ms -> 108 ms 11%
Async + GraphQL results
56. A few facts of prom.ua graphs
number of graphs: ~ 20
number of fields: ~ 2000
number of links: ~ 300
number of nodes: ~ 250
single entry point /graphql
refactoring and new vision for code
better monitoring
easy to test API with graphiql
56
Hiku
57. 57
Step 1. Mobile App API with GraphQL
Step 2. Separating Frontend from Backend
Step 3. Graph services as Proxy via different Graph APIs
Step 4. Replace SQLAlchemy models logic via Graph
Step 5. Mutations in Graph API
Step 6. A brave new world with GraphQL
58. End of 2018 - now
Hiku upgrade to mutations
New 2nd level graph for opinions and
mobile cabinet API
Read and write with graph
58
61. def add_new_comment_for_opinion(ctx, options):
opinion_id = options['opinion_id']
comment = options['comment']
user = ctx['user']
opinion = Opinion.get(opinion_id)
...
form = OpinionCommentForm()
if not form.validate():
return NewCommentResult(id=None, errors=form.validate_resp())
comment = opinion.new_comment(...)
comment.message = clear_text(form.data['comment'])
comment.author_user_id = user.id
db.session.commit()
return NewCommentResult(id=comment.id, errors=[])
62. def add_new_comment_for_opinion(ctx, options):
opinion_id = options['opinion_id']
comment = options['comment']
user = ctx['user']
opinion = Opinion.get(opinion_id)
...
form = OpinionCommentForm()
if not form.validate():
return NewCommentResult(id=None, errors=form.validate_resp())
comment = opinion.new_comment(...)
comment.message = clear_text(form.data['comment'])
comment.author_user_id = user.id
db.session.commit()
return NewCommentResult(id=comment.id, errors=[])
63. def add_new_comment_for_opinion(ctx, options):
opinion_id = options['opinion_id']
comment = options['comment']
user = ctx['user']
opinion = Opinion.get(opinion_id)
...
form = OpinionCommentForm()
if not form.validate():
return NewCommentResult(id=None, errors=form.validate_resp())
comment = opinion.new_comment(...)
comment.message = clear_text(form.data['comment'])
comment.author_user_id = user.id
db.session.commit()
return NewCommentResult(id=comment.id, errors=[])
64. def add_new_comment_for_opinion(ctx, options):
opinion_id = options['opinion_id']
comment = options['comment']
user = ctx['user']
opinion = Opinion.get(opinion_id)
...
form = OpinionCommentForm()
if not form.validate():
return NewCommentResult(id=None, errors=form.validate_resp())
comment = opinion.new_comment(...)
comment.message = clear_text(form.data['comment'])
comment.author_user_id = user.id
db.session.commit()
return NewCommentResult(id=comment.id, errors=[])
65. 65
Step 1. Mobile App API with GraphQL
Step 2. Separating Frontend from Backend
Step 3. Graph services as Proxy via different Graph APIs
Step 4. Replace SQLAlchemy models logic via Graph
Step 5. Mutations in Graph API
Step 6. A brave new world with GraphQL