Mostrando entradas con la etiqueta bbdd. Mostrar todas las entradas
Mostrando entradas con la etiqueta bbdd. Mostrar todas las entradas

jueves, 15 de septiembre de 2011

Servidor de búsquedas o Motor de búsquedas: Sphinx

En proyectos donde se manejan gran cantidad de datos sobre los cuales hay que buscar, el punto importante es la velocidad y el rendimiento, es decir, que busque rápido y que si hay muchas búsquedas a la vez no se degrade la aplicación.

Un buen motor de búsquedas, que sirve como un sistema intermedio entre la base de datos y nuestra capa de acceso a datos puede ser Sphinx:  http://sphinxsearch.com/about/sphinx/  

¿Qué beneficios tiene?, permite la indexación de determinados contenidos (mejorando aún más el acceso a rápido porque facilitas el encontrar por índices lo que luego buscas en base de datos).  Está programado en C++, estando bastante optimizado.

Tiene un gran punto a su favor, que es el que puede usarse en varios tipos de sistemas operativos y en lenguajes de programación


domingo, 9 de noviembre de 2008

Ruby y creando conjunto de objetos que no están mapeados en Base de Datos

Tendré una clase Person que tendrá Contactos.

class Contacto
#esto es el constructor
def initialize (params = {})
end
end


class Person < ActiveRecord::Base

attr_accessor :lista #ya te genera getter y setter... te crean el @lista , person.lista y person.lista=
#attr_reader :lista #así te haría el get ... person.lista
#attr_writer :lista #así te haría el set ... person.lista=
#@lista = [] #es un atributo vacío, entonces tendría que declarar un getter y un setter


validates_presence_of :name, :message => 'No puede estar en blanco'

has_many :phones


#esto es el constructor de persona
def initialize (parametros = {})
#debo borrar contactos para poder llamar luego al constructor de la clase base
@lista = parametros.delete[:contactos] #al borrar, te devuelve los valores
super parametros # llamada al constructor de la clase base
end




end

sábado, 8 de noviembre de 2008

BBDD en Ruby

Relación 1 a muchos

Pongamos que tenemos una persona que tiene muchos teléfonos

# una migración para crear una persona con su nombre

class CreatePeople < ActiveRecord::Migration
def self.up
create_table :people do |t|
t.column :name, :string
end
end

def self.down
drop_table :people
end
end

#una migración para indicar que existe la tabla teléfono y que una persona tiene muchos teléfonos.


class CreatePhones < ActiveRecord::Migration
def self.up
create_table :phones do |t|
t.column :number, :string
t.column :perdon_id, :integer
end
end

def self.down
drop_table :phones
end
end


#### ahora en los modelos
class Person < ActiveRecord::Base

has_many :phones # una persona tiene muchos teléfonos :phones
# has_many :telefonos, :class_name => "Phone"
# has_one :phone #una persona tiene un teléfono ...el nombre de :phone es el nombre del modelo
end

class Phone < ActiveRecord::Base
belongs_to :person #un teléfono pertenece a una persona.
end


Nota
.-Donde tienes un has_one o un has_many, del otro lado hay un belongs_to
.-Si la relación es de muchos a muchos, ponemos en los dos modelos el has_and_belongs_to_many (en plural)
.-Cuando es de muchos a muchos, tienes que crear una tabla en bbdd cuya convención sea tabla1_tabla2, donde están ordenadas alfabéticamente. Ejemplo: people_phones y luego es person_id, phone_id
.-Cuando hablamos de relaciones en ruby on rails, se tratan en arrays

viernes, 16 de febrero de 2007

Abator: generando ibatis automáticamente

Para los que usan ibatis, que es un mecanismo para sentencias sql y mapeos entre VO's que yo uso en Java, aquí tienen la forma de generar automáticamente algunos ficheros de configuración.
En pocas palabras, genera los VO's y los ficheros XML a partir de la base de datos.

http://ibatis.apache.org/abator.html
http://ibatis.apache.org/docs/tools/abator/