{"repo":"takenet/elephant","free":true,"listed":false,"github":"https://github.com/takenet/elephant","clone":"git clone https://github.com/takenet/elephant.git","description":"Persistence library that provides common data structures as composable elements to abstract any storage engine, including (No)SQL databases.","language":"C#","stars":57,"topics":["orm","storage-engine","redis","sql"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"Elephant Persistence library that provides common data structures as composable elements to abstract any storage engine, including SQL databases. Introduction Today's applications store data in different places like the own process memory, SQL databases, Redis, and other NoSQL databases. Usually, the developer uses distinct code patterns for each one of these storage engines. For memory storage, primitives and simple data structures are used, like lists and hashes. And for SQL databases, the most common pattern is the repository + unit of work. While this seems like the right thing to do (since you cannot perform advanced queries on a Redis database - for instance), sometimes the developer doesn't need the specific capabilities of that engine, and so there's no need to implement the storage engine specific pattern instead of using simple data structures. For instance, there's no semantic difference between a repository method and a (hash table) method. But even if the application only uses the first method, probably the developer will implement something like the repository pattern for SQL data access. But what happens if the persistence layer needs to be moved to Redis or Elasticsearch? Probably, the developer will implement the repository pattern for the target engine, leaving empty some methods that are not supported (like queries on Redis). Or maybe, they will need to refactor the code that uses the storage class... The idea behind this library is to expose a common layer","default_branch":null,"files":null,"tree":[],"storefront":"/r/takenet","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/takenet/elephant/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}