GraphQL için Sorgu Oluşturma Sürecinde Kullanılan Yöntemlerin Analizi ve İyileştirilmesi
Year 2021,
, 73 - 82, 30.01.2021
İbrahim Enes Aydoğdu
,
Ali Nizam
Abstract
Günümüzde teknolojik gelişmeler İnternete bağlanan toplam cihaz türü ve sayısında büyük artışa yol açmıştır. Sunucu makineler daha fazla istek almaya başlamış hem ağ trafiği hem de sunucu yanıt süresi olumsuz etkilenmiştir. Bu sorunları çözmek için geliştirilen GraphQL teknolojisi tek bir istekle birden fazla tablo, koleksiyon veya veri tabanına erişim sağlayarak toplu veri sorgulama ve değiştirmeye imkân vermektedir. Bu sayede cihaz başına düşen istek sayısı ve cihazların belleklerinde tutulacak veri boyutu azalır. Ancak GraphQL yeni bir teknoloji olduğundan henüz kod geliştirme sürecini yöneten ve kolaylaştıran araçlar tam olarak gelişmemiştir. Sunucu kısmında sorguları oluşturmak ve çalıştırmak için önemli ölçüde kodun elle yazılması gerekmektedir. Bu da yazılım geliştiricilere önemli bir iş yükü oluşturmaktadır. Bu çalışmada GraphQL sorgu geliştirme süreci, bu süreci kolaylaştırmak veya otomatikleştirmek için kullanılan araçlar, bu araçların kullandığı yöntemler ve sorgu geliştirme maliyetleri analiz edilmiştir. Bu maliyeti azaltmak için kodları otomatik oluşturan bir yöntem önerilmiş ve bir araç geliştirilmiştir. Geliştirilen yöntemin etkinliği diğer yöntemlerle karşılaştırılmış, sayısal olarak incelenmiş ve yazılımcıları birçok kodu tekrar yazmaktan kurtararak zamandan tasarruf sağladığı görülmüştür.
Supporting Institution
Fatih Sultan Mehmet Vakıf Üniversitesi
References
- Apollo. (2020). Executing a query. Erişim Şubat 29, 2020, https://www.apollographql.com/docs/react/data/queries/
- Biying, L. (2010). Jetty improves the performance of network management system based on TR069 protocol. 2010 IEEE International Conference on Intelligent Computing and Intelligent Systems, 3, 799–801. https://doi.org/10.1109/ICICISYS.2010.5658303
- Capers, J., & Bonsignour, O. (2011). The Economics of Software Quality. Addison-Wesley.
- Chen, T. H., Shang, W., Jiang, Z. M., Hassan, A. E., Nasser, M., & Flora, P. (2014). Detecting performance anti-patterns for applications developed using object-relational mapping. Proceedings - International Conference on Software Engineering, 1001–1012. https://doi.org/10.1145/2568225.2568259
- Costal, D., Farré, C., Gómez, C., Jovanovic, P., Romero, O., & Varga, J. (2017). Semi-automatic Generation of Data-Intensive APIs. Erişim http://opendata-ajuntament.barcelona.cat/data/en/dataset
- Drupal. (2020). Usage statistics for GraphQL | Drupal.org. Erişim Mart 3, 2020, https://www.drupal.org/project/usage/graphql
- Electronjs. (2020). GraphiQL | Apps | Electron. Erişim Mart 4, 2020, https://www.electronjs.org/apps/graphiql
- Facebook. (2015). GraphQL. Erişim Şubat 28, 2020, http://spec.graphql.org/July2015/
- Ghebremicael, E. S. (2017). Transformation of REST API to GraphQL for OpenTOSCA. https://doi.org/10.18419/opus-9352
- GraphQL. (2020). Who’s Using | GraphQL. Erişim Mart 3, 2020, https://graphql.org/users/
- Guo, Y., Deng, F., & Yang, X. (2018). Design and Implementation of Real-Time Management System Architecture based on GraphQL Design and Implementation of Real-Time Management System Architecture based on GraphQL. In IOP Conf. Ser.: Mater. Sci. Eng. (p. 466). https://doi.org/10.1088/1757-899X/466/1/012015
- Hartig, O., & Pérez, J. (2018). Semantics and Complexity of GraphQL Preprint Version, 27th World Wide Web Conference on World Wide Web.
- Hasura.io. (2020). Realtime GraphQL on PostgreSQL. Erişim Mayıs 10, 2020, https://hasura.io/
- He, H. (2008). Graphs-at-a-time : Query Language and Access Methods for Graph Databases, 405–417.
- Howtographql. (2019). Alternative approaches to schema development. Erişim Mart 4, 2020, https://www.howtographql.com/graphql-java/11-alternative-approaches/
- Howtographql. (2020). GraphQL is the better REST. Erişim Mart 3, 2020, https://www.howtographql.com/basics/1-graphql-is-the-better-rest/
- Javapoet. (2020). Javapoet: A Java API for generating .java source files. Erişim Mart 4, 2020, https://github.com/square/javapoet
- JFoenix. (2020). JavaFX Material Design Library. Erişim Mayıs 11, 2020, http://www.jfoenix.com/
- Kozma, D., Varga, P., & Larrinaga, F. (2019). Data-driven Workflow Management by utilising BPMN and CPN in IIoT Systems with the Arrowhead Framework. IEEE International Conference on Emerging Technologies and Factory Automation, ETFA, 2019-Septe, 385–392. https://doi.org/10.1109/ETFA.2019.8869501
- Li, L., Chou, W., Zhou, W., & Luo, M. (2016). Design Patterns and Extensibility of REST API for Networking Applications. IEEE Transactions on Network and Service Management, 13(1), 154–167. https://doi.org/10.1109/TNSM.2016.2516946
- McConnell, S. (2006). Software estimation : Demystifying the Black Art. Microsoft Press.
- MongoDB. (2020). The database for modern applications. Erişim Mart 4, 2020, https://www.mongodb.com/
- Porcello, E., & Banks, A. (2018). Learning GraphQL: Declarative Data Fetching for Modern Web Apps. O’Reilly Media.
- PostGraphile. (2020). CRUD Mutations. Erişim Mart 3, 2020, https://www.graphile.org/postgraphile/crud-mutations/
- Prisma. (2020). GraphQL Usage - Prisma. Erişim Mart 3, 2020, https://www.prisma.io/with-graphql
- Rasool, S., Khan, R., & Mian, A. N. (2019). GraphQL and DC-WSN-Based Cloud of Things. IT Professional, 21(1), 59–66. https://doi.org/10.1109/MITP.2018.2876982
- Relay. (2020). QueryRenderer. Erişim Mart 2, 2020, https://relay.dev/docs/en/query-renderer
- Rodriguez-Echeverria, R., Cánovas Izquierdo, J. L., & Cabot, J. (2017). Towards a UML and IFML Mapping to GraphQL. In ICWE 2017 (pp. 149–155). Springer Verlag. https://doi.org/10.1007/978-3-319-74433-9_13
- StG. (2020). Swagger-to-GraphQL. Erişim Şubat 29, 2020, https://www.npmjs.com/package/swagger-to-graphql
- Taskula, T. (2019). Advanced Data Fetching with GraphQL: Case Bakery Service.
- Torres, A., Galante, R., Pimenta, M. S., Jonatan, A., & Martins, B. (2017). Twenty years of object-relational mapping : A survey on patterns , solutions , and their implications on application design, 82, 1–18. https://doi.org/10.1016/j.infsof.2016.09.009
- Vargas, D. M., Mayor, U., Sim, D. S., Blanco, A. F., Pablo, J., Alcocer, S., Bergel, A. (2018). Deviation Testing: A Test Case Generation Technique for GraphQL APIs, 1–9.
- Vogel, M., Weber, S., & Zirpins, C. (2018). Experiences on Migrating RESTful Web Services to GraphQL, 2, 283–295.
- Wernet, C. (2017). Unifying access to data from heterogeneous sources through a RESTful API using an e icient and dynamic SQL-query builder. Hochschule Karlsruher Technik und Wirtschaft.
- Wittern, E., Cha, A., & Laredo, J. A. (2017). Generating GraphQL-Wrappers for REST(-like) APIs. In ICWE 2018. Springer, Cham.
Year 2021,
, 73 - 82, 30.01.2021
İbrahim Enes Aydoğdu
,
Ali Nizam
References
- Apollo. (2020). Executing a query. Erişim Şubat 29, 2020, https://www.apollographql.com/docs/react/data/queries/
- Biying, L. (2010). Jetty improves the performance of network management system based on TR069 protocol. 2010 IEEE International Conference on Intelligent Computing and Intelligent Systems, 3, 799–801. https://doi.org/10.1109/ICICISYS.2010.5658303
- Capers, J., & Bonsignour, O. (2011). The Economics of Software Quality. Addison-Wesley.
- Chen, T. H., Shang, W., Jiang, Z. M., Hassan, A. E., Nasser, M., & Flora, P. (2014). Detecting performance anti-patterns for applications developed using object-relational mapping. Proceedings - International Conference on Software Engineering, 1001–1012. https://doi.org/10.1145/2568225.2568259
- Costal, D., Farré, C., Gómez, C., Jovanovic, P., Romero, O., & Varga, J. (2017). Semi-automatic Generation of Data-Intensive APIs. Erişim http://opendata-ajuntament.barcelona.cat/data/en/dataset
- Drupal. (2020). Usage statistics for GraphQL | Drupal.org. Erişim Mart 3, 2020, https://www.drupal.org/project/usage/graphql
- Electronjs. (2020). GraphiQL | Apps | Electron. Erişim Mart 4, 2020, https://www.electronjs.org/apps/graphiql
- Facebook. (2015). GraphQL. Erişim Şubat 28, 2020, http://spec.graphql.org/July2015/
- Ghebremicael, E. S. (2017). Transformation of REST API to GraphQL for OpenTOSCA. https://doi.org/10.18419/opus-9352
- GraphQL. (2020). Who’s Using | GraphQL. Erişim Mart 3, 2020, https://graphql.org/users/
- Guo, Y., Deng, F., & Yang, X. (2018). Design and Implementation of Real-Time Management System Architecture based on GraphQL Design and Implementation of Real-Time Management System Architecture based on GraphQL. In IOP Conf. Ser.: Mater. Sci. Eng. (p. 466). https://doi.org/10.1088/1757-899X/466/1/012015
- Hartig, O., & Pérez, J. (2018). Semantics and Complexity of GraphQL Preprint Version, 27th World Wide Web Conference on World Wide Web.
- Hasura.io. (2020). Realtime GraphQL on PostgreSQL. Erişim Mayıs 10, 2020, https://hasura.io/
- He, H. (2008). Graphs-at-a-time : Query Language and Access Methods for Graph Databases, 405–417.
- Howtographql. (2019). Alternative approaches to schema development. Erişim Mart 4, 2020, https://www.howtographql.com/graphql-java/11-alternative-approaches/
- Howtographql. (2020). GraphQL is the better REST. Erişim Mart 3, 2020, https://www.howtographql.com/basics/1-graphql-is-the-better-rest/
- Javapoet. (2020). Javapoet: A Java API for generating .java source files. Erişim Mart 4, 2020, https://github.com/square/javapoet
- JFoenix. (2020). JavaFX Material Design Library. Erişim Mayıs 11, 2020, http://www.jfoenix.com/
- Kozma, D., Varga, P., & Larrinaga, F. (2019). Data-driven Workflow Management by utilising BPMN and CPN in IIoT Systems with the Arrowhead Framework. IEEE International Conference on Emerging Technologies and Factory Automation, ETFA, 2019-Septe, 385–392. https://doi.org/10.1109/ETFA.2019.8869501
- Li, L., Chou, W., Zhou, W., & Luo, M. (2016). Design Patterns and Extensibility of REST API for Networking Applications. IEEE Transactions on Network and Service Management, 13(1), 154–167. https://doi.org/10.1109/TNSM.2016.2516946
- McConnell, S. (2006). Software estimation : Demystifying the Black Art. Microsoft Press.
- MongoDB. (2020). The database for modern applications. Erişim Mart 4, 2020, https://www.mongodb.com/
- Porcello, E., & Banks, A. (2018). Learning GraphQL: Declarative Data Fetching for Modern Web Apps. O’Reilly Media.
- PostGraphile. (2020). CRUD Mutations. Erişim Mart 3, 2020, https://www.graphile.org/postgraphile/crud-mutations/
- Prisma. (2020). GraphQL Usage - Prisma. Erişim Mart 3, 2020, https://www.prisma.io/with-graphql
- Rasool, S., Khan, R., & Mian, A. N. (2019). GraphQL and DC-WSN-Based Cloud of Things. IT Professional, 21(1), 59–66. https://doi.org/10.1109/MITP.2018.2876982
- Relay. (2020). QueryRenderer. Erişim Mart 2, 2020, https://relay.dev/docs/en/query-renderer
- Rodriguez-Echeverria, R., Cánovas Izquierdo, J. L., & Cabot, J. (2017). Towards a UML and IFML Mapping to GraphQL. In ICWE 2017 (pp. 149–155). Springer Verlag. https://doi.org/10.1007/978-3-319-74433-9_13
- StG. (2020). Swagger-to-GraphQL. Erişim Şubat 29, 2020, https://www.npmjs.com/package/swagger-to-graphql
- Taskula, T. (2019). Advanced Data Fetching with GraphQL: Case Bakery Service.
- Torres, A., Galante, R., Pimenta, M. S., Jonatan, A., & Martins, B. (2017). Twenty years of object-relational mapping : A survey on patterns , solutions , and their implications on application design, 82, 1–18. https://doi.org/10.1016/j.infsof.2016.09.009
- Vargas, D. M., Mayor, U., Sim, D. S., Blanco, A. F., Pablo, J., Alcocer, S., Bergel, A. (2018). Deviation Testing: A Test Case Generation Technique for GraphQL APIs, 1–9.
- Vogel, M., Weber, S., & Zirpins, C. (2018). Experiences on Migrating RESTful Web Services to GraphQL, 2, 283–295.
- Wernet, C. (2017). Unifying access to data from heterogeneous sources through a RESTful API using an e icient and dynamic SQL-query builder. Hochschule Karlsruher Technik und Wirtschaft.
- Wittern, E., Cha, A., & Laredo, J. A. (2017). Generating GraphQL-Wrappers for REST(-like) APIs. In ICWE 2018. Springer, Cham.