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
Este blog va de pequeñas 'notas' sobre cosas que hago en mi trabajo, desde trozos de código, noticias que me impacten, informática, java, struts, ruby, programación, cmmi, gestión de proyectos.
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
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
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
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/
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/
Suscribirse a:
Entradas (Atom)