Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: rembolso en 1 Agosto 2011, 20:30 pm



Título: consejo Base de Datos..
Publicado por: rembolso en 1 Agosto 2011, 20:30 pm
hola . estoy asiendo una base de datos para millones de usuarios. Y tengo dos dudas enfrentadas. Son las siguientes : (en c++)

¿Cuál  de estas formas es mas rápida y consume menos recursos?

Forma 1: mantener en una Cadena todos los usuarios (supongamos q serian 2 millones)  y en la petición extraer el usuario directamente de cadena. Pero lo malo es que consume mucha ram y en la hora de buscar un usuario entre 2 millones consume mucho y se puede desbordar el  buffer.
Forma 2: mantener en una carpeta  todas las carpetas con los nombres de usuario y adentro de la carpeta un archivo .txt con su datos .asi en la petición lo extrae directamente mas rápido y no consume ram pero consume disco y muchas carpetas ejemplo:

Petición :usuario rembolso&pass&choripan
Server: busca una carpeta que se llame rembolso y dentro de esa carpeta esta rembolsopass.txt

UsuariosDB\Rembolso\rembolsopass.txt

La petición es mas rápida pero como ya aclare consume mucho disco y lo hace mas lento pero no importa necesitaría un consejo. Y si hay otra forma por favor postéenla.

gracias por leer


Título: Re: consejo Base de Datos..
Publicado por: Novlucker en 1 Agosto 2011, 20:40 pm
Utiliza un verdadero RDBMS ... MSSQL, MySQL, PostgreSQL o similar, de donde ha salido esa idea de crear los directorios y demás? :huh:

Saludos


Título: Re: consejo Base de Datos..
Publicado por: 4rkn63l en 2 Agosto 2011, 03:30 am
http://tangentsoft.net/mysql++/ (http://tangentsoft.net/mysql++/)  :silbar:


Título: Re: consejo Base de Datos..
Publicado por: crazykenny en 6 Agosto 2011, 12:14 pm
Bueno, rembolso, yo tengo un sistema de bases de datos que se me ocurrio para tema de tiendas (ojo, por tema de aficion, no por otra cosa), y lo que hice fue cargar todos los datos en matrices, en el sentido de, por ejemplo, los datos esenciales como ahora precio, categoria, subcategoria y nombre en una matriz, cantidad de productos en otra, y luego, para lo que son parametros de busqueda, crear una matriz que contenga todos los parametros de busqueda generales (tipo, por ejemplo simple, color, coste de mana, etc) en otra 3a matriz, y luego, utilizando estos nombres, accedo a un archivo en la carpeta X para luego cargar los "terminos de busqueda" de ese parametro para luego, en una ultima matriz de 2 niveles (donde el primer nivel hace referencia al numero de producto, y tiene que tener un valor igual al limite de productos, y el segundo, como el primero, pero para los terminos de busqueda), donde le asigno un valor (el cual es, por ejemplo, si hay 3 colores -rojo, azul y verde- para un parametro de busqueda, y el producto es verde, le pongo el valor correspondiente) al producto correspondiente, y asi con cada producto; no se si me explico.
De todas formas, esto lo he utilizado para clasificar mas de 2000 cartas de magic, yougioh, y world of warcraft, y a lo mejor, insertando un termino de busqueda, me tarda alrededor de poco mas de una docena de milisegundos en mostrarme (o mejor dicho, ordenar aleatoriamente) todas las cartas en un core 2 duo a 2.4 Ghz.
Por otra parte, si lo que te comento no te convence, te recomiendo la segunda opcion; no se a ti, pero para mi seria mas simple, aunque ocupe mas disco y para acceder a los datos de los usuarios requiera mas accesos al disco (o eso creo), aunque, personalmente, lo haria con matrices.
Por ultimo, viendo que hablas de millones de usuarios, lo normal seria que, para buscar un usuario, te tarde un buen rato insertando datos de busquedas; yo, por ejemplo, para ver todas las cartas que tengo de un JCC tipo magic o yugioh, me tarda alrededor de los 11 milisegundos, quizas unos pocos mas, y tengo unas 2000 y pico, por lo que supogo que te tardara sobre los 11 segundos minimo con mi modo, aunque creo que me equivoco si usas otro metodo.
Espero ser de ayuda.
Saludos.