TY - JOUR T1 - GraphQL için Sorgu Oluşturma Sürecinde Kullanılan Yöntemlerin Analizi ve İyileştirilmesi AU - Nizam, Ali AU - Aydoğdu, İbrahim Enes PY - 2021 DA - January DO - 10.7240/jeps.737786 JF - International Journal of Advances in Engineering and Pure Sciences JO - JEPS PB - Marmara Üniversitesi WT - DergiPark SN - 2636-8277 SP - 73 EP - 82 VL - 33 IS - 1 LA - tr AB - 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. KW - GraphQL KW - otomatik sorgu oluşturma KW - KW - nesne ilişkisel eşleşme KW - KW - anlık sogulama KW - NoSQL CR - Apollo. (2020). Executing a query. Erişim Şubat 29, 2020, https://www.apollographql.com/docs/react/data/queries/ CR - 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 CR - Capers, J., & Bonsignour, O. (2011). The Economics of Software Quality. Addison-Wesley. CR - 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 CR - 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 CR - Drupal. (2020). Usage statistics for GraphQL | Drupal.org. Erişim Mart 3, 2020, https://www.drupal.org/project/usage/graphql CR - Electronjs. (2020). GraphiQL | Apps | Electron. Erişim Mart 4, 2020, https://www.electronjs.org/apps/graphiql CR - Facebook. (2015). GraphQL. Erişim Şubat 28, 2020, http://spec.graphql.org/July2015/ CR - Ghebremicael, E. S. (2017). Transformation of REST API to GraphQL for OpenTOSCA. https://doi.org/10.18419/opus-9352 CR - GraphQL. (2020). Who’s Using | GraphQL. Erişim Mart 3, 2020, https://graphql.org/users/ CR - 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 CR - Hartig, O., & Pérez, J. (2018). Semantics and Complexity of GraphQL Preprint Version, 27th World Wide Web Conference on World Wide Web. CR - Hasura.io. (2020). Realtime GraphQL on PostgreSQL. Erişim Mayıs 10, 2020, https://hasura.io/ CR - He, H. (2008). Graphs-at-a-time : Query Language and Access Methods for Graph Databases, 405–417. CR - Howtographql. (2019). Alternative approaches to schema development. Erişim Mart 4, 2020, https://www.howtographql.com/graphql-java/11-alternative-approaches/ CR - Howtographql. (2020). GraphQL is the better REST. Erişim Mart 3, 2020, https://www.howtographql.com/basics/1-graphql-is-the-better-rest/ CR - Javapoet. (2020). Javapoet: A Java API for generating .java source files. Erişim Mart 4, 2020, https://github.com/square/javapoet CR - JFoenix. (2020). JavaFX Material Design Library. Erişim Mayıs 11, 2020, http://www.jfoenix.com/ CR - 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 CR - 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 CR - McConnell, S. (2006). Software estimation : Demystifying the Black Art. Microsoft Press. CR - MongoDB. (2020). The database for modern applications. Erişim Mart 4, 2020, https://www.mongodb.com/ CR - Porcello, E., & Banks, A. (2018). Learning GraphQL: Declarative Data Fetching for Modern Web Apps. O’Reilly Media. CR - PostGraphile. (2020). CRUD Mutations. Erişim Mart 3, 2020, https://www.graphile.org/postgraphile/crud-mutations/ CR - Prisma. (2020). GraphQL Usage - Prisma. Erişim Mart 3, 2020, https://www.prisma.io/with-graphql CR - 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 CR - Relay. (2020). QueryRenderer. Erişim Mart 2, 2020, https://relay.dev/docs/en/query-renderer CR - 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 CR - StG. (2020). Swagger-to-GraphQL. Erişim Şubat 29, 2020, https://www.npmjs.com/package/swagger-to-graphql CR - Taskula, T. (2019). Advanced Data Fetching with GraphQL: Case Bakery Service. CR - 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 CR - 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. CR - Vogel, M., Weber, S., & Zirpins, C. (2018). Experiences on Migrating RESTful Web Services to GraphQL, 2, 283–295. CR - 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. CR - Wittern, E., Cha, A., & Laredo, J. A. (2017). Generating GraphQL-Wrappers for REST(-like) APIs. In ICWE 2018. Springer, Cham. UR - https://doi.org/10.7240/jeps.737786 L1 - https://dergipark.org.tr/tr/download/article-file/1104788 ER -