elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: [1] 2 3 4
1  Programación / Bases de Datos / Re: Duda sobre eficiencia en: 7 Febrero 2011, 13:12 pm
Bueno, he diseñado ya más o menos la base de datos y he sacado un diagrama E-R



Aver si me podéis dar vuestra opinión de que os parece...  :)

He quitado la tabla que tenía anteriormente como "infocuentas" que era como una ampliación de los atributos de la cuenta, ya que de normal solo se trabajaba con unos pocos.
Pero he decidido poner todo en una misma tabla, y luego desde la aplicación ya realizaré las funciones necesarias para obtener los datos que quiera.

El tema que haya comentarios a usuarios, a fotos, o los mensajes con 0-1 usuarios es porque he pensado en que deje el valor NULL cuando un usuario es eliminado (en vez de borrar sus mensajes y comentarios) y desde la apliación tendré esto en cuenta para mostrar el nombre como "Usuario eliminado" pero que se puedan ver los mensajes.

También lo he hecho en los mensajes "privados", para que si se borra un usuario que te había enviado un mensaje, no se te borre el mensaje, aunque si que te mostrará "Usuario eliminado" y no el nombre del que te venía (Que ya no existirá).

----------------------------------------

Tengo una duda, que ya no me acuerdo como se hacía.

En la tabla "amistades" por ejemplo, tengo "idcuenta1" e "idcuenta2", son la clave primaria, pero además no puede haber otra fila con los mismos valores pero invertidos.
E imagino que al tenerlo como ahora, si que me dejaría tener por ejemplo:

Idcuenta1 Idcuenta2
1              2
2              1

¿Cómo se indica para que no puedan repetirse de este modo?

---------------------------------------

Y otra duda, ¿sería recomendable introducir dentro de la clave primaria las claves foráneas?

Por ejemplo en la tabla "Fotos"  tengo el "idfoto" solamente como clave primaria.
Aunque con eso ya basta, sería mejor añadir "idcuenta"?


Un saludo y muchas gracias
2  Programación / Bases de Datos / Re: Duda sobre eficiencia en: 7 Febrero 2011, 10:56 am
Ok, gracias ;)

Es interesante el aporte, (no conocía ni la existencia de RDF, me he informado algo por wikipedia) al menos me he enterado de algo sobre por donde van los tiros en cuanto a eficiencia al hacer particionados de los datos y tal, que imagino es a lo que te refieres de como trabaja internamente el SGBBDD.

Estoy diseñando ahora decentemente la BBDD.

Tengo una pregunta, aver si me la podéis contestar.

Por un lado tengo la entidad "Foto" que tendría los atributos título, url, fecha.

Pero también cada foto es subida por un usuario, así que tenía puesto el atributo "idcuenta" como la cuenta que había subido la fotografía.

El caso es que como voy a crear otra tabla para los álbumes, en realidad esta relacion del usuario que la ha subido y la foto, la puedo poner ahí en esta tabla, diciendo que pertenece al álbum "Subidas".
(Creo que así es como lo tiene Tuenti por ejemplo, porque utiliza el tipo de album 1 para etiquetadas, tipo 2 para subidas y tipo 3 para albumes creados por el usuario)

Esto sería lo normalizado, pero cada vez que trabajo con fotos, tengo que saber título, url, fecha y idcuenta que la subió.

Entonces por quizá rapidez y facilidad al trabajar me vendría bien tener el campo "idcuenta" como clave foránea en la tabla "foto".

Podría ser un dato redundante si además luego añado esta relación en la tabla de álbums, o simplemente puedo omitir de la tabla albums el álbum "Subidas por X" ya que para dicho caso específico podría obtener las fotos de ese álbum directamente de la tabla "Fotos"


No sé si me he explicado bien, es sencilla la duda pero igual me he enrevesado un poco... :P  Gracias
3  Programación / Bases de Datos / Re: Duda sobre eficiencia en: 7 Febrero 2011, 02:10 am
los SGBBDD no están pensados para eso, dudo mucho que la eficiencia sea buena, están optimizados para tratar con tablas grandes. Lo de crear tantas tablas me parece una aberración.

Si quieres hacer un buen PFC busca documentación al respecto de cómo se optimizan las bases de datos, y si luego la enlazas para que lo podamos ver los demás mejor.

Pero no sé lo que te has fumado. Mira cualquier proyecto que use bases de datos, como los foros, cms, etc. y verás que no crean tablas dinámicamente. No he mirado ninguno, pero casi seguro que es así.



No me he fumado nada... Simplemente se me había ocurrido que quizá fuera mejor tener 1.000 tablas con 1.000 datos cada una, que una tabla con 1.000.000 de datos, puesto que la gran mayoría de veces que se accede a datos, solamente se trabajaría con los de una de esas tablas.

No había trabajado con bases de datos a gran escala, por ello preguntaba si estaba bien el planteamiento. Aparte que se lo comenté a un profesor y me dijo que sí que para el manejo de grandes datos lo separara :S (También es cierto que no sé que grado de conocimiento tenía en esto porque no es el que enseña bbdd)
De todas formas gracias por la respuesta

pues la aberracion es crear 2 tablas que estan relacionadas logicamente pero no en la base de datos :P

fotos y comentarios fotos deberian estar relacionadas no? de 1 a muchos :P y ya que nos n:n no necesitas la tabla "relacionesfotos"

no hace falta crear muchas tablas para no tener muchos datos por tabla, es mejor tener muchos datos en cada tabla (asi eliminas la redundancia en tablas con distinto nombre) y sabiendo relacionarlas optimizarias tu sistema ;)

Si bueno, ese esquema lo hice hace bastante tiempo y ni me había fijado que no estaba relacionado. Claramente estarán relacionadas tanto en la base de datos como al trabajar con ellas en la aplicación.

Lo de la tabla "relacionesfotos" era una tabla como por ejemplo en el tuenti o facebook para "etiquetados" donde se etiquetaba una persona en la foto. Y la tabla "fotos" estaba para guardar la info de las fotos y de la cuenta que las subía.
(Solo tenia los albumes fijos "etiquetadas" y "subidas")

Entonces es mejor tener una tabla "fotos" donde guarde todas las fotos subidas a la web, añadiendo el identificador del usuario que la subió como clave. A pesar de que el volumen sea enorme?

Y así con todos los mensajes privados, comentarios de tablones, etc. Una tabla de cada apartado para toda la red social?

Muchas gracias
4  Programación / Bases de Datos / Duda sobre eficiencia en: 7 Febrero 2011, 01:08 am
Hola a todos!

Estoy desarrollando una aplicación web que consiste en una red social (tipo Tuenti, Facebook) sencilla.

Ya había entregado para un trabajo de la universidad una versión muy "cutre" y para evitar complicación con la base de datos fija. Es decir tenía una tabla para todas las fotos que se subieran, otra tabla para todos los comentarios que tuvieran todas las cuentas, otra tabla para todos los comentarios de todas las fotografías subidas... etc

Es decir, todo en plan general para no tener que crear tablas dinámicamente en la aplicación para cada usuario, etc

El esquema era algo así para que sea más facil verlo:



Bueno esto era una "chapuza" pero bueno se me pedía más detalle en la documentación del proyecto que no en el proyecto en sí.

Ahora voy a realizar el PFC sobre este trabajo, pero ampilándolo y mejorando lo que tenía.

Aparte de otras cosas que voy a introducir, como mensajes privados, álbums para tener las fotos, un blog en el tablon, etc....

La principal cosa es el diseño de la base de datos, que imagino que en una aplicación como esta que se supone va a tener grandes cantidades de usuarios, cada usuario grandes cantidades de fotos, comentarios, etc... Ese esquema es una aberración a la eficiencia para buscar los datos.

Lo que tengo en mente es que cada vez que se registra un usuario se le crean automáticamente la tabla "comentarioscuenta_idcuenta" donde "idcuenta" es el identificador de la cuenta.

Así mismo se crearía una tabla "fotoscuenta_idcuenta" para las fotos que suba esa cuenta, "albums_idcuenta" para los albums que tenga esa cuenta... etc

Esto haría que por cada usuario tengamos unas 5 o 6 tablas, pero imagino que aunque tengamos "miles de tablas" en la base de datos, la eficiencia sería enorme comparado con tener 6 tablas y millones de datos en cada una.

Si mi planteamiento es incorrecto o no está del todo bien, me gustaría que me dierais consejo con vuestra experiencia.


Otra duda que tengo, es en el ejemplo de los comentarios que tiene cada foto.

Lo lógico con este esquema, sería crear una tabla de comentarios por cada foto subida. Pero no se hasta que punto esto podría ser eficiente, ya que entonces tendríamos miles o millones de tablas, puesto que se espera tener miles o millones de fotografías subidas. Y habría fotos que no tendrían comentarios, u otras que tendrían pocos...

Entonces, ¿qué sería más eficiente? Crear una tabla para los comentarios que tengan todas las fotos subidas por un usuario (así solo habría tantas tablas como usuarios), o crear como he comentado antes, una tabla de comentarios por cada foto subida.


Un saludo y gracias por vuestro tiempo ;)
5  Comunicaciones / Redes / Re: abrir puertos con tp-link un modelo raro en: 25 Enero 2011, 04:33 am
Ahí lo tenías.

NAT -> Virtual Server

Simplemente con que rellenes los campos:

Start Port Number: Primer puerto del rango que quieres abrir
End Port Number: Ultimo puerto el rango que quieres abrir
(Para un solo puerto, pones el mismo en los dos)

Local IP Adress: La dirección IP en tu red local, del equipo al que quieres direccionar el trafico por esos puertos indicados. (Por ejemplo 192.168.1.2)

Protocolo dejalo en ALL si no sabes cual es, y en Aplicación, es simplemente para que le des un nombre y diferencies para que está abierto ese puerto.
6  Comunicaciones / Redes / Re: Que puede causar la perdida de señal? en: 14 Enero 2011, 18:49 pm
Pues la verdad, que no sé que podrías hacer... como no pudieras ponerte una propia antena direccional en el AP (imagino que el ayuntamiento o donde sea) Aún así no se si ganarías mucho.

Lo raro es eso, que con una señal de un 10-15% te conecte y te llegue a ir bien.
Lo normal sería que o bien no te conectara, o tuvieras unas pérdidas de paquetes muy considerables y por tanto redujera drásticamente la velocidad. (Que será lo que ocurra de normal)

A pesar de otras condiciones como nombras, que efectivamente te afectarán, si cuando te ha llegado a descargar a 200kb/s era con la misma calidad de señal, entonces era lo extraño.

Aver si alguien te puede dar alguna solución, pero imagino que todas serán de añadir potencia o una mejor antena tanto en tu casa como en el AP.

Otro sería poner otro repetidor entre medio, pero claro, eso ya si tienes algún amigo que viva entre medio xD
7  Comunicaciones / Redes / Re: Que puede causar la perdida de señal? en: 14 Enero 2011, 17:49 pm
Ah ok, pensaba que había sido un cambio que habías hecho ahora el poner el router ahí.

Pues si la señal que te suele llegar es de un 10%... y conectando a 11Mbps  que es el rango más bajo de /g (para poder conectar más lento, pero con menor señal)

Lo que haría es usar el network stumbler por ejemplo, y hacer un análisis de la señal que te llega en decibelios.

Que antena tienes puesta? Si es una conexión alejada, lo mejor es poner una direccional que tenga buena ganancia, apuntando al AP, para intentar coger algo mejor la señal, ya que con una señal al 10-14%... que te conecte es una suerte.

Un saludo!
8  Comunicaciones / Redes / Re: Ayuda con subredes... en: 14 Enero 2011, 16:43 pm
172.16.4.127 /26
Máscara /26 -> 255.255.255.192  o 11111111.11111111.11111111.11000000

Nos deja para direcciones de host los últimos 6 bits de la dirección.

Lo más sencillo es fijarnos en los bits que están puestos a 1 del último byte de la dirección, para saber las divisiones de las posibles subredes.

En este caso tenemos 2 bits que siguen siendo para id de subred, con esos 2 bits podremos representar 4 redes distintas.  (2^nºbits=4)

De tal forma que podremos tener como identificadores de subred las siguientes combinaciones para el utimo byte:

00000000 -> X.X.X.0 (172.16.4.0)
01000000 -> X.X.X.64 (172.16.4.64)
10000000 -> X.X.X.128 (172.16.4.128)
11000000 -> X.X.X.192 (172.16.4.192)


Ahora ya sabemos cuales serán los identificadores de cada una de esas subredes, entre las que se encuentra la dirección que nos dan 172.16.4.127

Cada subred tiene un identificador de red, que aquel en el que todos los bits para id.host están a 0 (las indicadas arriba)

También dispone de una dirección Broadcast, que es cuando todos los identificadores de host, están puestos a 1.

El resto de combinaciones de bits de identificador de host, son valores correctos para hosts.

La dirección que se nos da "172.16.4.127" (la última dirección de la subred .64, ya que la siguiente .128 es el identificador de otra subred)

Si la traducimos a binario para verlo más claro (solo traduzco el ultimo byte):

172.16.4.127 -> 172.16.4.01111111

En negrita los bits de id.subred, (nos encontramos en la subred .64)
En subrayado los bits para id.host (todos los bits puestos a 1, es la dirección Broadcast)

Así que ya sabemos que la dirección que nos han dado, no es una dirección de host válida, ya que se trata de una dirección broadcast.


Así se haría con todas las demás, solo has de cambiar las posibles divisiones de las subredes, cuando cambies la máscara.

Espero que me haya explicado bien, y que no haya cometido errores, que ya hace un tiempo que di esto  :P


Un saludo!

PD. También hay unas direcciones específicas que están reservadas/privadas, y no pueden ser utilizadas. Esto lo tenía en los apuntes pero de eso si que ya no me acuerdo :P  Por ejemplo la 0.0.0.0 o la loopback 127.0.0.1
9  Comunicaciones / Redes / Re: Que puede causar la perdida de señal? en: 14 Enero 2011, 16:14 pm
Te refieres a que tu router no detecta la red inalambrica no?

La perdida de señal es del router en el exterior, no de los ordenadores que tienes cableados al router, no?


Si es eso, y lo has metido en una caja aislante, de material metálico o conductor, puede ser que esa caja te esté haciendo el efecto de una "jaula de Faraday".

Un saludo
10  Comunicaciones / Redes / Re: Por qué me puede suceder esto? en: 14 Enero 2011, 06:33 am
Seguramente el problema sea debido a lo que comentáis, la antena es direccional, y debe estar bien ajustada apuntando para recibir como es debido.

Si bien es verdad que bien ajustada debería ir mejor que una omni, pero depende ya la distancia y la calidad que te llegue.

Yo tengo una "chinorris" también, mismo chip, y va genial. Comparada con la integrada del portatil se llevan un abismo. La mía venía con una omnidireccional y coge mucha mejor señal, no me hizo falta comprar una direccional.

Si bien es cierto que aunque muchas veces te diga que la señal es cojonuda... en realidad no lo es tanto, y si que se puede caer o ser más inestable, ojo, si estás intentando conectarte a redes que con una tarjeta normal no podrías.

En mi caso para conectarme con la red de otro piso, desde un local a la altura de la calle, en muchos sitios aunque me dijera que la calidad de la señal era de un 90% mínimo, al realizar la conexión y mirar las estadísticas, los paquetes recibidos por mi ordenador, resultaban erróneos y el router tenía que reenviarlos.
Por ejemplo me decía que había recibido 1000 paquetes, y reintentos habían sido 3000.

En cambio los transmitidos, llegaban todos perfectamente al router. Esto era debido a que tienen mucha potencia para enviar la señal, y por lo tanto el router nos "escucha" perfectamente, pero el router probablemente no tenga esa potencia, y entonces la recepción no es tan buena. (De ahí que sea más importante la sensitividad que la potencia de la tarjeta)

Te comento esto, porque puede que si estás alejado, o con muchos obstáculos de por medio, quizá aunque te diga que la señal sea buena, puede ser engañoso.

Pero bueno, el cambio de ganancia de una direccional de 10dbi a una omnidireccional no creo que lo notes mucho, e imagino que si se te desconectaba por la posición de la antena, te tendría que conectar sin problemas.

Un saludo
Páginas: [1] 2 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines