B.1.5 Modelo de datos
B.1.5.1 Modelos relevantes
Es la única de las aplicaciones analizadas que ha utilizado una base de datos no relacional (MongoDB) para almacenar la mayoría de los contenidos.
Las principales colecciones (el equivalente a una tabla en este tipo de servidores) son Topics y
Comments.
B.1.5.2 Colecciones
Al no ser una base de datos relacional no cuenta con tablas sino con colecciones. Cuenta con 10 colecciones:
comments
feeds
forums
notifications
notifierJobs
tags
tokens
topics
users
whitelists
B.1.5.3 Gráficos UML
Al no contar con un esquema por definición no se puede obtener una representación gráfica automática. Para fines documentales se muestran algunos contenidos de ejemplos que fueron creados a tal efec
to. Puede haber colecciones vacías en caso de no haberse guardado ningún objeto:
> db.comments.findOne()
{
"_id" : ObjectId("5745cb09789325545f8f85d9"),
"text" : "este me mola",
"context" : "paragraph",
"reference" : "5745cac4789325545f8f85d4",
"topicId" : ObjectId("5745cac4789325545f8f85d1"),
"author" : ObjectId("573af365435155135e008a9c"),
"createdAt" : ISODate("2016-05-25T15:55:53.958Z"),
"flags" : [ ],
"score" : 0,
"votes" : [ ],
"replies" : [ ],
"__v" : 0
}
> db.feeds.findOne()
{
"_id" : ObjectId("5745cad8e99435545f9c11fc"),
"type" : "topic-published",
"topic" : "5745cac4789325545f8f85d1",
"createdAt" : 1464191704274,
"forum" : null
}
> db.forums.findOne()
{
"_id" : ObjectId("577a2e42fe4cc2fb56563c03"),
"name" : "organizativo",
"title" : "Documentos Organizativos",
"owner" : ObjectId("573af365435155135e008a9c"),
"summary" : "Discute los documentos organizativos propuestos",
"createdAt" : ISODate("2016-07-04T09:37:06.867Z"),
"__v" : 0
}
> db.notifierJobs.findOne()
null
> db.tags.findOne()
{
"_id" : ObjectId("573af65e789325545f8f85cf"),
"name" : "priueba",
"hash" : "priueba",
"createdAt" : ISODate("2016-05-17T10:45:50.238Z"),
"image" : "transportation",
"color" : "#091A33",
"__v" : 0
}
> db.tokens.findOne()
{
"_id" : ObjectId("5734853093b50d070f7907a9"),
"user" : ObjectId("5734853093b50d070f7907a8"),
"scope" : "email-validation",
"meta" : {
"ua" : "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0",
"referer" : "https://democracyos.compas.alabs.org/signup",
"host" : "democracyos.compas.alabs.org",
"ips" : [ ],
"ip" : "::ffff:127.0.0.1"
},
"createdAt" : ISODate("2016-05-12T13:29:20.973Z"),
"__v" : 0
}
> db.topics.findOne()
{
"_id" : ObjectId("5745cac4789325545f8f85d1"),
"updatedAt" : ISODate("2016-05-25T16:00:38.501Z"),
"mediaTitle" : "test",
"tag" : ObjectId("5745cb65789325545f8f85da"),
"topicId" : "test",
"authorUrl" : "",
"bodyTruncationText" : "",
"source" : "",
"closingAt" : ISODate("2016-06-02T10:00:00Z"),
"author" : "migue",
"links" : [ ],
"votable" : true,
"createdAt" : ISODate("2016-05-25T15:54:44.487Z"),
"participants" : [ ],
"votes" : [ ],
"clauses" : [
{
"markup" : "<div><span style=\"color: rgb(0, 126, 132); font-family: 'Titillium Web';\">Jaromil es activista, hacker y artista, cofundador del think&do tank Dyne.org, que alberga una comunidad digital de makers críticos y desarrolladores nómadas. </span></div>",
"position" : 0,
"_id" : ObjectId("5745cac4789325545f8f85d6"),
"empty" : false
},
{
"markup" : "<div><br></div>",
"position" : 1,
"_id" : ObjectId("5745cac4789325545f8f85d5"),
"empty" : true
},
{
"markup" : "<div><span style=\"color: rgb(0, 126, 132); font-family: 'Titillium Web';\">Escribe código y lo publica como software libre y de código abierto. Su investigación se centra en la descentralizacion, los algoritmos y las prácticas media independientes. </span></div>",
"position" : 2,
"_id" : ObjectId("5745cac4789325545f8f85d4"),
"empty" : false
},
{
"markup" : "<div><br></div>",
"position" : 3,
"_id" : ObjectId("5745cac4789325545f8f85d3"),
"empty" : true
},
{
"markup" : "<div><span style=\"color: rgb(0, 126, 132); font-family: 'Titillium Web';\">Jaromil ha recibido el premio Vilém Flusser Award (Transmediale) y ha sido reconocido como uno de los mejores 100 emprendedores sociales (Purpose Economy, 2014) y líder joven europeo (40 under 40, 2012).</span></div>",
"position" : 4,
"_id" : ObjectId("5745cac4789325545f8f85d2"),
"empty" : false
}
],
"__v" : 4,
"publishedAt" : ISODate("2016-05-25T15:55:03.290Z")
}
> db.user.findOne()
null
> db.users.findOne()
{
"_id" : ObjectId("573af365435155135e008a9c"),
"salt" : "8e222c26db61181b381285faaba3d512bc6eeb6e8f47ae5ebe97a7b759b86e41",
"hash" : "066cf4eb7d5dce6a8ef0e174b33e644de30e7a72ccc7a7a284a92afbe1ed7ec083cee9aa6117673e7fcade7eff0125762ae204a8bbefc115ff1b47a57218ab84383c4db14d5cd8a255e02a4dd3f58f3f7d5e2c162bda03db1de1170a08a08bb90dfebbeb6910458fef9e437ad66cffcb7f7160350b2a79eb83b5627f29ad407741fa222b2578295cada9774c1a3fcfa97520fe892a4d8dbe06c8d9f0e9ec0f72054851173b405c6d57e67739c3e067065cab8599784ad0b5bc5473b1e05bd01d2c56f5cf4355b12d52d9e35d8510a32e655d37053adfdf63378c0a304831f50b848e0c9716b5dd5b32999eaafc6c9a61d357690ded0b90a633fb69f252b822186888938a12bce0bc8c65c067cabfd3a227c5e5a90d38356838ae97c809061998fc9f187b781eb92e6fcd544aaf879a1249ffa4228b9728ffc51431d126c5d1bb03dc749fc19ae365ef23964c51c80459e8c7c8356b89c5e336cebbc54d630385fe063eaaf904df1c7e4dfe6dc76ad1d0ebee3dda8a1bb6cd05c7d1b6d3f947295bae277e8c9176c83dcad93c20e5dda303896847ecc879cff4b67f9ffad95d5cf30c011231ef40e86184af5392016f19618500db6e51be1d96d9fa38cc21339550562e34a7d8303ae4b7fc8fe49f0d16e7928ade24add57f79da41af5211e6d52b47ca94d018216bc8511b5df63a17525c5c46f5d36e0820abbabc8ca249cbb6",
"email" : "[email protected]",
"firstName" : "admin",
"lastName" : "admin",
"locale" : "es",
"notifications" : {
"new-topic" : true,
"replies" : true
},
"createdAt" : ISODate("2016-05-17T10:33:09.466Z"),
"emailValidated" : true,
"__v" : 0
}
> db.whitelists.findOne()
null