Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/webschool-io/universal-data-access-layer
https://github.com/webschool-io/universal-data-access-layer
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/webschool-io/universal-data-access-layer
- Owner: Webschool-io
- Created: 2014-09-21T10:28:13.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-10-26T22:36:35.000Z (about 8 years ago)
- Last Synced: 2024-04-11T16:22:11.153Z (9 months ago)
- Size: 1.95 KB
- Stars: 0
- Watchers: 8
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Universal Data Access Layer
Uma ideia que tenho há MUITO TEMPO e agora vamos começar a tirar do papel eu e o Marcelo Carvalho é de um Data Access Layer que trabalhe com bancos NoSQL.
A ideia eh que vc possa criar um roteiro de onde seus dados irão em um sistema com vários bancos de dados!
Por exemplo:
- insere no MongoDB;
- pega certos valores desse Objeto e cria as relações com GRAFOS
- pega certos valores desse Objeto e cria o Objeto de CACHE em um Redis da vida.
E assim vai! E claro que tudo via REST.
A ideia é que essa API tenha a mesma interface de CRUD para qualquer banco, porém para cada TIPO de banco exista uma interface mais especializada para ele, diferentemente dos relacionais que são todos iguais.
Porque eu sempre evangelizei essa arquitetura híbrida de Bancos NoSQL desde 2012 pelo menos.## Arquitetura híbrida
> Também conhecido como Persistência Poliglota.
Para essa arquitetura inicial de bancos NoSQL iremos utilizar:
- MongoDB: modelo central
- Neo4J: relacionamentos
- Redis: Cache / PubSub / Sessão
- ElasticSearch: busca textual## API CRUD
- Create: `insert` ou `save`
- Retrieve: `find` e `findOne`
- Update: `update` ou `save`
- Delete: `remove`### Create
A função para **inserir** um dado usando ou `insert` ou `save` será passando o objeto a ser inserido no parâmetro da função, essa tendo setado a conexão e o Model/Coleção/Tabela onde será inserido. Por exemplo:
```js
var MongoDB = require('UniversalDataAccessLayer')('MongoDB');
// MongoDB.connect('mongodb://localhost:27017'); a conexão ja estará no config.js
var Schema = new MongoDB.Schema({name: {type: String, required: true});
var Model = new MongoDb.Model(Schema);var User = new Model({name: "Suissa"});
User.save(callback);
// ou User.insert({name: "Suissa"}, callback);
```### Retrieve
### Update
### Delete