ORCA: GO Programlama Dili için ORM/ODM Kütüphanesi

Bu bildiride Go olarak bilinen Golang dili için geliştirilmiş ORCA adında yeni bir ORM kütüphanesi sunulmaktadır. Geliştirilenkütüphane SQLite, MongoDB, RedisDB ve MemcacheDB olmak üzere dört farklı veritabanı sistemine veritabanı tipinden bağımsızolarak destek sunmaktadır. Böylelikle rakiplerinden farklı olarak, veritabanı ve hatta veritabanı tipi değiştirildiğinde bile uygulamanınkaynak kodunu değiştirmeden kullanabilme imkanı sunmaktadır. Bunun dışında benzerlerine göre daha kullanıcı dostu ve dahayüksek performans sağlayan bir kütüphanedir. Ayrıca kullanıcının kendi fonksiyonlarını yazabilmesini sağlayan yerel kanca (localhook) ve global kanca (global hook) yapılarını sunmaktadır.

ORCA: An ORM/ODM Library for Go Programming Language

This paper proposes a new ORM library, namely ORCA, for the Golang (Go) language. The proposed library supports four different database systems (SQLite, MongoDB, RedisDB and MemcacheDB), regardless of database type. Thus, unlike its competitors, it offers the possibility to use the database without changing the source code ıf when the database or even the database type is changed. Besides, ORCA performs better with a more user friendly syntax compared to its competitors. ORCA also offers local hook and global hook structures that enable the user to write their own functions.

___

  • [1]Y. Ueda and M. Ohara, “Performance competitiveness of a statically compiled language for server-side Web applications,” in ISPASS 2017 - IEEE International Symposium on Performance Analysis of Systems and Software, 2017, pp. 13–22.
  • [2]“blueperf/acmeair-monolithic-java: This version of Acme air is redesigned removing hardcoded components to WXS and also optimized for Cloud Data Services.” [Online]. Available: https://github.com/blueperf/acmeair-monolithic-java. [Accessed: 03- Feb-2020].
  • [3]“blueperf/acmeair-monolithic-nodejs: A Node.js implementation of the Acme Air Sample Application. With datastore support of MongoDB. With runtime support of Bluemix/CloudFoundry, Docker... With Micro-Services.” [Online]. Available: https://github.com/blueperf/acmeair-monolithic-nodejs. [Accessed: 03-Feb-2020].
  • [4]“index | TIOBE - The Software Quality Company.” [Online]. Available: https://www.tiobe.com/tiobe-index/. [Accessed: 13-Feb2020].
  • [5]“jinzhu/gorm: The fantastic ORM library for Golang, aims to be developer friendly.” [Online]. Available: https://github.com/jinzhu/gorm. [Accessed: 03-Feb-2020].
  • [6]“xorm/xorm: Simple and Powerful ORM for Go, support mysql,postgres,tidb,sqlite3,mssql,oracle - xorm - Gitea: Git with a cup of tea.” [Online]. Available: https://gitea.com/xorm/xorm. [Accessed: 03-Feb-2020].
  • [7]“src-d/go-kallax: Kallax is a PostgreSQL typesafe ORM for the Go language.” [Online]. Available: https://github.com/src-d/gokallax. [Accessed: 03-Feb-2020].
  • [8]“ezbuy/redis-orm: write db yaml once, generate go orm code everywhere.” [Online]. Available: https://github.com/ezbuy/redisorm. [Accessed: 03-Feb-2020].
  • [9]“zebresel-com/mongodm: A golang object document mapper (ODM) for MongoDB.” [Online]. Available: https://github.com/zebresel-com/mongodm. [Accessed: 03-Feb-2020].
  • [10]“MehmetEminKaymaz/Orca: Simple and Powerful ORM for Go Language.” [Online]. Available: https://github.com/MehmetEminKaymaz/Orca. [Accessed: 13-Feb-2020].
  • [11]“go-pg/pg: Golang ORM with focus on PostgreSQL features and performance.” [Online]. Available: https://github.com/go-pg/pg. [Accessed: 13-Feb-2020].
  • [12]“PolyglotPersistence.” [Online]. Available: https://martinfowler.com/bliki/PolyglotPersistence.html. [Accessed: 03-Feb-2020].
  • [13]“list - The Go Programming Language.” [Online]. Available: https://golang.org/pkg/container/list/. [Accessed: 13-Feb-2020].
  • [14]K. Elhardt and R. Bayer, “A Database Cache for High Performance and Fast Restart in Database Systems,” ACM Trans. Database Syst., vol. 9, no. 4, pp. 503–525, Dec. 1984.
  • [15]R. Jain, Y. B. Lin, S. Mohan, and C. Lo, “A Caching Strategy to Reduce Network Impacts of PCS,” IEEE J. Sel. Areas Commun., vol. 12, no. 8, pp. 1434–1444, 1994.