{"id":15869070,"url":"https://github.com/qubitpi/athena","last_synced_at":"2025-03-16T02:31:22.447Z","repository":{"id":37466530,"uuid":"489849086","full_name":"QubitPi/athena","owner":"QubitPi","description":"A GraphQL Object Storage Webservice Backed by OpenStack Swift and Hadoop HDFS","archived":false,"fork":false,"pushed_at":"2024-04-15T05:16:42.000Z","size":17535,"stargazers_count":5,"open_issues_count":4,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-16T11:25:14.605Z","etag":null,"topics":["graphql","object-storage","openstack-swift","webservice"],"latest_commit_sha":null,"homepage":"https://qubitpi.github.io/athena/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QubitPi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-05-08T04:55:08.000Z","updated_at":"2024-04-17T13:39:15.507Z","dependencies_parsed_at":"2024-04-17T13:38:31.932Z","dependency_job_id":null,"html_url":"https://github.com/QubitPi/athena","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QubitPi%2Fathena","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QubitPi%2Fathena/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QubitPi%2Fathena/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QubitPi%2Fathena/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QubitPi","download_url":"https://codeload.github.com/QubitPi/athena/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243801675,"owners_count":20350108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["graphql","object-storage","openstack-swift","webservice"],"created_at":"2024-10-06T00:01:18.997Z","updated_at":"2025-03-16T02:31:22.434Z","avatar_url":"https://github.com/QubitPi.png","language":"Java","readme":"Athena \u003csup\u003e![Java Version Badge][Java Version Badge]\u003c/sup\u003e\n===========================================================\n\n\u003e My sincere thanks to [yahoo/fili] \u0026 [yahoo/elide], which gave tremendous amount of guidance on design and development\n\u003e of [Athena], and to my former employer, Yahoo, who taught me to love software engineering and fundamentally\n\u003e influenced my tech career\n\n[![Maven Central Version][Maven Central Version Badge]][Maven Central Version URL]\n[![GitHub Workflow Status][GitHub Workflow Status badge]][GitHub Workflow Status URL]\n[![Apache License Badge][Apache License Badge]][Apache License, Version 2.0]\n\nAthena is a Java library that lets you set up object storage webservice with minimal effort. Athena is meant to be\nspecialized on managing **files**, such as books, videos, and photos. It supports object storage through two variants of\nAPIs:\n\n- A [JSON API] for uploading and downloading files\n- A [GraphQL] API for reading file metadata, including\n\n    - File name\n    - File type\n    - etc.\n\nAthena has **first-class support for [OpenStack Swift][OpenStack Swift] and [Hadoop HDFS][Hadoop HDFS]** file storage\nback-ends, but Athena's flexible pipeline-style architecture can handle nearly any back-end for data storage, such as\n[S3][S3 File Store].\n\nObject storage (also known as object-based storage) is a computer data storage architecture that manages data as\nobjects, as opposed to other storage architectures like file systems which manages data as a file hierarchy, and block\nstorage which manages data as blocks within sectors and tracks.\n\nEach object (i.e. file), in Athena, typically includes:\n\n- **the data itself**,\n- **a variable amount of metadata**, and\n- **a globally unique identifier**\n\nAthena allow retention of massive amounts of unstructured data in which data is _written once and read once (or many\ntimes)_. It is used for purposes such as storing objects like videos and photos.\n\nAthena, however, is not intended for transactional data and _ does not support the locking and sharing mechanisms\nneeded to maintain a single, accurately updated version of a file_.\n\nQuick Start\n-----------\n\nAthena comes with a pre-configured [example application][example application] to help you get started and serve as a\njumping-off-point for building your own web service using Athena. The example application lets you upload and download\nbooks you love to read, and picks up where [Swift's quick-start tutorial][OpenStack Swift's quick-start tutorial]\nleaves off.\n\nFeatures\n--------\n\n### Storage Abstraction\n\n**One of the design principles of Athena is to abstract lower layers of storage away from the administrators and\napplications**. Thus, data is exposed and managed as objects instead of files or blocks. They do not have to perform\nlower-level storage functions like constructing and managing logical volumes to utilize disk capacity or setting RAID\nlevels to deal with disk failure.\n\nAthena also allows the addressing and identification of individual objects by more than just file name and file\npath. Athena adds **a unique identifier** across the entire system, to support much larger namespaces and eliminate name\ncollisions.\n\n### Inclusion of Rich Custom Metadata within the Object\n\nAthena explicitly **separates file metadata from data** to support additional capabilities. As opposed to fixed\nmetadata in file systems (filename, creation date, type, etc.), Athena provides for full function, custom,\nobject-level metadata in order to:\n\n- Capture application-specific or user-specific information for better indexing purposes\n- Support data-management policies (e.g. a policy to drive object movement from one storage tier to another)\n- Centralize management of storage across many individual nodes and clusters\n- Optimize metadata storage (e.g. encapsulated, database or key value storage) and caching/indexing (when authoritative\n  metadata is encapsulated with the metadata inside the object) independently from the data storage (e.g. unstructured\n  binary storage)\n\n### Programmatic Data Management\n\nAthena provides programmatic interfaces to allow applications to manipulate data. At the base level, this includes\ncreate, read, and delete (CRUD) functions for basic read, write and delete operations. The API implementations are\nREST-based, allowing the use of many standard HTTP calls.\n\nDocumentation\n-------------\n\nMore information about Athena can be found [here][Athena Documentation]\n\nLicense\n-------\n\nThe use and distribution terms for [Athena] are covered by the [Apache License, Version 2.0].\n\n[Apache License Badge]: https://img.shields.io/badge/Apache%202.0-F25910.svg?style=for-the-badge\u0026logo=Apache\u0026logoColor=white\n[Apache License, Version 2.0]: https://www.apache.org/licenses/LICENSE-2.0\n[Athena]: https://qubitpi.github.io/athena/\n[Athena Documentation]: https://qubitpi.github.io/athena/\n\n[example application]: https://qubitpi.github.io/athena/docs/intro\n\n[GitHub Workflow Status badge]: https://img.shields.io/github/actions/workflow/status/QubitPi/athena/ci-cd.yml?branch=master\u0026logo=github\u0026style=for-the-badge\n[GitHub Workflow Status URL]: https://github.com/QubitPi/athena/actions/workflows/ci-cd.yml\n[GraphQL]: https://graphql.org/\n\n[Hadoop HDFS]: https://qubitpi.github.io/hadoop/\n\n[Java Version Badge]: https://img.shields.io/badge/Java-17-brightgreen?style=for-the-badge\u0026logo=OpenJDK\u0026logoColor=white\n[JSON API]: https://qubitpi.github.io/json-api/\n\n[Maven Central Version Badge]: https://img.shields.io/maven-central/v/io.github.qubitpi.athena/athena-parent-pom?style=for-the-badge\u0026logo=apachemaven\u0026labelColor=1B1C30\u0026color=4D9FEA\n[Maven Central Version URL]: https://central.sonatype.com/namespace/io.github.qubitpi.athena\n\n[OpenStack Swift]: https://qubitpi.github.io/openstack-swift/\n[OpenStack Swift's quick-start tutorial]: https://qubitpi.github.io/athena/docs/filestores/local-swift\n\n[S3 File Store]: https://qubitpi.github.io/athena/docs/filestore#custom-stores\n\n[yahoo/elide]: https://github.com/yahoo/elide\n[yahoo/fili]: https://github.com/yahoo/fili\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqubitpi%2Fathena","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqubitpi%2Fathena","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqubitpi%2Fathena/lists"}