Este documento describe MongoDB y MongoMapper. Habla sobre las características de NoSQL como esquema libre, distribución y escalabilidad. Explica los tipos principales de NoSQL como llave/valor, orientadas a columnas y orientadas a documentos. Luego profundiza en MongoDB describiendo cómo se almacenan y manipulan los datos, y cómo conectarse y realizar operaciones básicas como insertar, actualizar y eliminar documentos.
Docker 101 - dockers y Bases de Datos DBRoman Herrera
Apuntes para utilizar dockers. Comandos básicos para interactuar con docker. Instalación de docker en Windows. Utilizar dockers contenedores para laboratorio de pruebas con sistemas de Bases de Datos. Configurar MySQL en docker. Conectarse a MySQL desde docker o externamente con MySQLworkbench. Configurar PostgreSQL en dockers. Conectar PgAdmin al postgreSQL en docker.
Charla introductoria al lenguaje Python dictada por Julián Cardonnet, en el marco de los festejos del Software Freedom Day 2009 en la ciudad de Tandil, Argentina
Docker 101 - dockers y Bases de Datos DBRoman Herrera
Apuntes para utilizar dockers. Comandos básicos para interactuar con docker. Instalación de docker en Windows. Utilizar dockers contenedores para laboratorio de pruebas con sistemas de Bases de Datos. Configurar MySQL en docker. Conectarse a MySQL desde docker o externamente con MySQLworkbench. Configurar PostgreSQL en dockers. Conectar PgAdmin al postgreSQL en docker.
Charla introductoria al lenguaje Python dictada por Julián Cardonnet, en el marco de los festejos del Software Freedom Day 2009 en la ciudad de Tandil, Argentina
Bajo un Sol abraZador
La Tierra en el Viento Solar
Jorge Zuluaga, Dr. Grupo de Física y Astrofísica Computacional Instituto de Física, U. de A. zuluagajorge@gmail.com - http://jzuluaga.blogspot.com
Bajo un Sol abraZador
La Tierra en el Viento Solar
Jorge Zuluaga, Dr. Grupo de Física y Astrofísica Computacional Instituto de Física, U. de A. zuluagajorge@gmail.com - http://jzuluaga.blogspot.com
Tutorial en Apache Spark - Clasificando tweets en realtimeSocialmetrix
Apache Spark [1] es un nuevo framework de procesamiento distribuido para big data, escrito en Scala con wrappers para Python, que viene generando mucha atención de la comunidad por su potencia, simplicidad de uso y velocidad de procesamiento. Ya siendo llamado como el remplazo de Apache Hadoop.
Socialmetrix desarrolla soluciones en este framework para generar reportes y dashboards de información a partir de los datos extraídos de redes sociales.
Los participantes de este tutorial van aprender a levantar información de Twitter usando Spark Streaming, Desarrollar algoritmos para calcular hashtags más frecuentes, usuarios más activos en batch processing aplicarlos en realtime a los nuevos tweets que lleguen a través del stream.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...espinozaernesto427
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta intensidad son un tipo de lámpara eléctrica de descarga de gas que produce luz por medio de un arco eléctrico entre electrodos de tungsteno alojados dentro de un tubo de alúmina o cuarzo moldeado translúcido o transparente.
lámparas más eficientes del mercado, debido a su menor consumo y por la cantidad de luz que emiten. Adquieren una vida útil de hasta 50.000 horas y no generan calor alguna. Si quieres cambiar la iluminación de tu hogar para hacerla mucho más eficiente, ¡esta es tu mejor opción!
Las nuevas lámparas de descarga de alta intensidad producen más luz visible por unidad de energía eléctrica consumida que las lámparas fluorescentes e incandescentes, ya que una mayor proporción de su radiación es luz visible, en contraste con la infrarroja. Sin embargo, la salida de lúmenes de la iluminación HID puede deteriorarse hasta en un 70% durante 10,000 horas de funcionamiento.
Muchos vehículos modernos usan bombillas HID para los principales sistemas de iluminación, aunque algunas aplicaciones ahora están pasando de bombillas HID a tecnología LED y láser.1 Modelos de lámparas van desde las típicas lámparas de 35 a 100 W de los autos, a las de más de 15 kW que se utilizan en los proyectores de cines IMAX.
Esta tecnología HID no es nueva y fue demostrada por primera vez por Francis Hauksbee en 1705. Lámpara de Nernst.
Lámpara incandescente.
Lámpara de descarga. Lámpara fluorescente. Lámpara fluorescente compacta. Lámpara de haluro metálico. Lámpara de vapor de sodio. Lámpara de vapor de mercurio. Lámpara de neón. Lámpara de deuterio. Lámpara xenón.
Lámpara LED.
Lámpara de plasma.
Flash (fotografía) Las lámparas de descarga de alta intensidad (HID) son un tipo de lámparas de descarga de gas muy utilizadas en la industria de la iluminación. Estas lámparas producen luz creando un arco eléctrico entre dos electrodos a través de un gas ionizado. Las lámparas HID son conocidas por su gran eficacia a la hora de convertir la electricidad en luz y por su larga vida útil.
A diferencia de las luces fluorescentes, que necesitan un recubrimiento de fósforo para emitir luz visible, las lámparas HID no necesitan ningún recubrimiento en el interior de sus tubos. El propio arco eléctrico emite luz visible. Sin embargo, algunas lámparas de halogenuros metálicos y muchas lámparas de vapor de mercurio tienen un recubrimiento de fósforo en el interior de la bombilla para mejorar el espectro luminoso y reproducción cromática. Las lámparas HID están disponibles en varias potencias, que van desde los 25 vatios de las lámparas de halogenuros metálicos autobalastradas y los 35 vatios de las lámparas de vapor de sodio de alta intensidad hasta los 1.000 vatios de las lámparas de vapor de mercurio y vapor de sodio de alta intensidad, e incluso hasta los 1.500 vatios de las lámparas de halogenuros metálicos.
Las lámparas HID requieren un equipo de control especial llamado balasto para funcionar
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
9. Tipos de NoSQL
Key/Value (Llave/valor)
Column-oriented (orientadas a columnas)
Document-oriented (orientadas a
documentos)
10. Key/Value
¿Qué es?
una llave
un blob
Ventajas:
muy simple para implementar
muy rapido
Útil para:
el cache
sistema de manejo de cola (redis)
limitado para aplicaciones complejas
11. Column-oriented
¿Qué es?
utiliza tablas dinamicas
mas flexible que tablas de RDBMS
multi-dimensional
Ventajas:
el sistema de consulta se acerca al de un RDBMS
diseño de google, soporta grandes cargas
versiones
Útil para:
grandes colecciones
mapping de los datos a objetos no es natural (igual que
rdbms)
12. Document-oriented
¿Qué es?
formato json o xml
muy flexible
Ventajas:
simple
rapido, pero menos que key/value store
mapea facilmente a un objeto (python, ruby, c++ etc)
Útil para:
aplicaciones web complejas
todo tipo de aplicacion que utiliza documentos y
necesita flexibilidad
13. La soluciones que aporta el NoSQL
built-in replication, master a master
Map/Reduce
mas simple de instalar (se necesita tomar un curso
para instalar a oracle o sqlserver)
casi todas son software libre, muy accesible para
todos
hecho para programadores, mas orientadas a la
programaciones (map/reduce lo entienden mejor los
programadores que los administradores de base de
datos)
14. ¿Qué es el map/reduce?
permite operaciones de manipulacion en batch de
datos manipulation y operaciones de agregacion de
datos
equivalente a GROUP BY en SQL
16. ¿Que es el map?
El map es aplicar una funcion sobre cada elemento de una
matriz y retornar una matriz con sus elementos
modificados.
Ejemplo (en ruby):
> matriz = [1,2]
> matriz.map { |n| n+2 }
=> [3, 4]
17. ¿Qué es el reduce?
Reduce es aplicar una funcion sobre cada elemento de una
matriz y retornar un solo elemento. Se hace iterando sobre
cada elemento de la matriz. Cada iteracion empieza con el
valor retornado por la iteracion anterior y hace algo con
esta. Por esta razón, un reduce se debe iniciar con una
valor de entrada.
ejemplo (en ruby), con valor de entrada igual a cero:
> [1, 2, 3].reduce(0) do |sum, value|
sum + value
end
=> 6
18. Las ventajas del map/reduce
Esta hecho para poderse ejecutar en paralelo
Como todo es colecciones
=> Fácil de dividir en varias tareas
Probado y comprobado por los grande(google, amazon,
facebook)
21. Las principales funcionalidades
Document-oriented storage
Consultas
Modificadores atómicos
Map/Reduce
GridFS: Almacenamiento de archivos
Soporte para Full Index
Replicación & Alta Disponibilidad
Auto-Sharding
22. ¿Como instalar mongodb?
1. Para instalar mongodb descargamos el binario
correspondiente para nuestro sistema operativo http://www.
mongodb.org/display/DOCS/Downloads
2. descomprimes el paquete y creas los directorios /data y
/data/db o C:data y C:data dependiendo de tu SO
3. para iniciar el servicio corres el binario /bin/mongod o
binmongod.exe que viene en el paquete que has
descargado en el paso 1
para un entorno de producción se debe usar un sistema
operativo de 64-bits.
23. ¿Como instalar mongodb?
Para los sistemas unix*(linux,freebsd, OSX) es recomendado
usar el sistema de paquetes de cada sistema operativo.
adicionalmente 10gen provee de paquetes oficiales para las
distribuciones Linux Debian, Ubuntu, CentOS y Fedora
http://www.mongodb.
org/display/DOCS/Ubuntu+and+Debian+packages
http://www.mongodb.
org/display/DOCS/CentOS+and+Fedora+Packages
24. ¿ Cómo se guardan los datos en
mongodb?
Colección:
Documento:
la música que tiene
Álbum de un
el almacén
artista
25. ¿BSON?
{
nombre: "Yellow Submarine",
autor: "The Beatles",
canciones: ["Yellow Submarine", "Only A Northern Song",
"All Together Now", "Hey Bulldog",
"It's All Too Much", "All You Need Is Love",
"Pepperland", "Sea Of Time",
"Sea Of Holes", "Sea Of Monsters",
"March Of The Meanies", "Pepperland Laid Waste",
"Yellow Submarine In Pepperland" ],
genero: "Rock",
anho: 1969,
cantidad: 20
}
26. Empotrar vs Referenciar
{
nombre: "Yellow Submarine",
autor: "The Beatles",
canciones: [ { name: "Yellow Submarine", duracion: 159 },
{ name: "Only A Northern Song", duracion: 204 },
{ name: "All Together Now", duracion: 130 },
{ name: "Hey Bulldog", duracion: 191 },
{ name: "It's All Too Much", duracion: 384 },
{ name: "All You Need Is Love", duracion: 231 },
...],
genero: "Rock",
anho: 1969,
cantidad: 20
}
27. ¿Cómo conectarse a mongodb?
console: ./bin/mongo
Drivers Oficiales: Drivers Comunitarios:
C C# and .NET
C++ Clojure
Java Erlang
Javascript Go
Perl Groovy
PHP Haskell
Python node.js
Ruby Lua
LuaMongo
Scala
Scheme (PLT)
Smalltalk
http://www.mongodb.org/display/DOCS/Drivers
28. ¿Cómo añadir y eliminar documentos a
una colección?
./mongo
> use tienda_de_musica
> album = {
nombre: "Let it be", autor: "The Beatles", canciones: [],
genero: "Rock", anho: 1970, cantidad: 10 }
> db.musica.save(album);
> db.musica.find();
{ "_id" : ObjectId("4c10a976eaa67158a0d74b4b"), "nombre":
"Let it be", "autor" : "The Beatles", "canciones" : [ ], "genero" :
"Rock", "anho" : 1970, "cantidad" : 10 }
>db.music.remove({});
>db.music.remove({autor: "The Beatles"})
31. Un poco más acerca de los
modifcadores
$set y $unset: sirven para asignarle y quitarle el valor a un
campo de un documento respectivamente.
$inc: incrementan el valor asignado a un campo, solo es valido
para valores enteros.
$push,$pushAll: añaden uno o varios valores a un arreglo de
datos contenido en un campo del documento.
$addToSet: añade un valor a un arreglo si el valor no esta
repetido.
$pop, $pull, $pullAll: son operadores para borrar los valores
contenidos en un arreglo.
http://www.mongodb.org/display/DOCS/Updating
32. ¿Cómo hacer consultas en mongodb?
Operadores condicionales para describir criterios de búsqueda:
$gt(>) $lt(<), $gte(<=), $lte(>=), $ne(!=)
>db.things.find({j : {$lt: 3}});
$exists chequea que el documento tenga o no un campo
> db.things.find( { a : { $exists : true } } );
Operadores solo para arreglos:
>db.things.find(a : {$in: x}
$in a incluye al menos un valor del arreglo x.
$nin negación de $in
>db.things.find(a : {$all: x}
$all a incluye todos los valores de x
http://www.mongodb.org/display/DOCS/Advanced+Queries
33. ¿Cómo hacer consultas en mongodb?
WHERE
sql> select * from musica where cantidad=1;
> db.musica.find(cantidad: 1);
sql> select nombre from musica where cantidad<2;
> db.musica.find(cantidad: {$lt: 2}, {'nombre': 1});
sql>select * from musica where name like 'The%';
>db.musica.find( { name : /The/ } );
ORDER BY
sql> select * from musica ORDER BY anho desc;
> db.musica.find({}).sort(anho: -1);
LIMIT y OFFSET
sql> select * from musica LIMIT 10 OFFSET 5;
>db.musica.find().skip(5).limit(10)
34. ¿Cómo hacer consultas en mongodb?
COUNT
sql>SELECT COUNT(*) FROM musica WHERE autor = "The
Beatles";
>db.musica.count({autor: "The Beatles"})
DISTINCT
sql> select distinct autor from musica;
>db.musica.distinct("autor")
35. ¿Cómo hacer consultas en mongodb?
GROUP BY
sql>select autor, count(*) from musica where genero="rock"
group by autor
db.musica.group({key: { autor: true },
cond: { genero: "Rock" },
reduce: function(obj, prev) {
prev.csum += obj.cantidad;
},
initial: { csum: 0 }});
36. ¿Como usar map/reduce en mongodb?
utiliza JavaScript con Spidermonkey de Mozilla
se puede pasar cualquier coleccion al map, osea se puede
usar toda la flexibilidad de las consultas de
MongoDB+Map/Reduce
>db.collection.mapReduce(mapfunction,reducefunction[,
options]);
> m = function() { emit(this.user_id, 1); } > r = function(k,vals) {
return 1; } > res = db.events.mapReduce(m, r, { query :
{type:'sale'} }); > db[res.result].find().limit(2) { "_id" :
8321073716060 , "value" : 1 } { "_id" : 7921232311289 ,
"value" : 1 }
38. Sharding
Auto-Sharding
particionamento de los datos en varios servidor
sharding por coleccion
proceso mongos (routing)
replica set
chuncks
config servers
42. ¿Como empezar a usar
MongoMapper?
Instalar
>sudo gem install mongo_mapper
>sudo gem install bson_ext
Incluir en el proyecto Rails
agregar la la dependencia en config/environment.rb
config.gem "mongo_mapper", :version => "0.7.6", :source =>
"http://gemcutter.org"
43. ¿Como empezar a usar
MongoMapper?
Configurar la conexión a la base de datos
config/database.yml
development:
database: nombre-del-proyecto-development
host: localhost
port: 27017
test:
database: nombre-del-proyecto-test
production:
database: nombre-del-proyecto-production
44. Incluir en el proyecto Rails
Configurar la conexión a la base de datos
config/initializers/mongodb.rb
db_config = YAML::load(File.read(File.join(Rails.root,
"/config/database.yml")))
if db_config[Rails.env] && db_config[Rails.env]['adapter'] ==
'mongodb'
mongo = db_config[Rails.env]
MongoMapper.connection = Mongo::Connection.new(mongo
['hostname'], mongo['port'] || 27017, :logger => Rails.logger)
MongoMapper.database = mongo['database']
MongoMapper.ensure_indexes!
end
45. ¿Cómo definir un modelo?
app/model/cancion.rb
class Album
include MongoMapper::Document
key :nombre, String
key :autor, String
key :genero, String
key :anho, Integer
key :cantidad, Integer
key :canciones, Array
end
46. ¿Comó definir un modelo empotrado?
app/model/cancion.rb
class Cancion
include EmbeddedDocument
key :name, String
key :duracion, Integer
end
app/model/album.rb
class Album
include MongoMapper::Document
...
has_many :canciones, :class_name => "Cancion"
end
47. ¿Que tipo de llaves existen?
los tipos de llaves que estan definidos en MongoMapper son:
ObjectID
String
Integer
Boolean
Array
Hash
Time
Binary
Set
48. ¿Se pueden definir nuevo tipos de
llaves?
class Point
attr_reader :x, :y
def self.to_mongo(value)...end
def self.from_mongo(value)...end
def initialize(*args)...end
end
49. ¿Cómo se definen las relaciones uno a
muchos?
class Cancion
...
key :album_id, ObjectID
belongs_to :album
...
end
class Album
...
has_many :canciones
...
end
50. ¿Cómo se definen las relaciones uno a
uno?
class Cancion
...
has_one :video
...
end
class Video
...
key :cancion_id, ObjectID
belongs_to :cancion
...
end
51. ¿Cómo se definen las relaciones
muchos a muchos?
class Cancion
...
key :album_ids, Array
many :albums, :in => :album_ids
...
end
class Album
...
key :canciones_ids, Array
has_many :canciones, :in => :canciones_ids
...
end
52. ¿MongoMapper tiene
relaciones polimorfas?
class Comment
...
key :commentable_id, ObjectId
key :commentable_type, String
belongs_to :commentable, :polymorphic => true
end
class Album
...
has_many :comments, :as => :commentable, :class_name =>
"Comment"
end
53. ¿Cómo añadir validaciones a los
modelos?
class Album
include MongoMapper::Document
key :nombre, String, :unique => true
key :autor, String, :required => true
key :genero, String, :in => ["Rock", "Pop", "Tropical"]
key :anho, Integer
key :cantidad, Integer
validates_presence_of :nombre, :message => "no ah sido
asignado"
many :canciones
end
54. ¿Qué validaciones existen en
MongoMapper?
required => boolean
unique => boolean
format => regexp
in => array
not_in => array
length => Integer/Range/Hash
además puedes usar la api de validatable para agregar mas
validaciónes
validates_presence_of, validates_format_of, validates_true_for,
etc
http://validatable.rubyforge.org/