IMAGENES EN SQLSERVER2000

22/10/2004 - 21:19 por Ayuda para particionar una Tabla... | Informe spam
Hola a todos, buen día tengo 2 tablas
CREATE TABLE [dbo].[tabla_fotos] (
[id_imagen] [int] NOT NULL ,
[foto] [image] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE TABLE [dbo].[tabla_fotos_CHAR] (
[id_imagen] [int] NOT NULL ,
[foto] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY]
GO

en cada una hice los siguientes inserts
insert into tabla_fotos
values (1,'c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.jpg')
go
insert into tabla_fotos
values (2,'c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.zip')
go
INSERT INTO TABLA_FOTOS_CHAR
VALUES (1,'c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.jpg')
GO
insert into tabla_fotos_char
values (2,'c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.zip')
go
SELECT * FROM TABLA_FOTOS
G
1 0x633A5C67626C5C736961635C666F746F735F6D7565737472615F6368696361676F5C4141434E3331313230364D4D4E4E484330302E6A706
2 0x633A5C67626C5C736961635C666F746F735F6D7565737472615F6368696361676F5C4141434E3331313230364D4D4E4E484330302E7A6970

SELECT * FROM TABLA_FOTOS_CHAR
GO
1 c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.jpg
2 c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.zip

Mi pregunta 1
EN LOS 2 INSERTS involucre las rutas de las imagenes ¿que guardo en la
primer tabla donde el campo es IMAGE?
Mi pregunta 2
Que me aconsejan para manejarlas ingresaremos 5000 registros diarios y cada
uno tendra aprox 4 imagenes.
El desarrollo se hara con .net de microsoft, me aconsejaron utilizar
ado.net, pues me decían que en ambas solo guardaba las rutas. Y para
almacenar las imagenes solo podía hacerlo con ado.net (bueno supongo que
podría utilizar tambien otras formas). Soy la administradora de la bd y debo
definir el mecanismo de carga de datos, pues ahorita hay aprox 3000,000 de
datos que les debo involucrar.
Mi pregunta 3
si tengo un campo image, se que ese tipo de dato mide 16 bytes for the
pointer. obtuve con sp_space los espacios ocupados y el resultado fue
exec sp_spaceused tabla_fotos
go
tabla_fotos 2 40 KB 24 KB 16 KB 0 KB
exec sp_spaceused tabla_fotos_char
go
tabla_fotos_CHAR2 16 KB 8 KB 8 KB 0 KB

La información en disco del tamaño de las imagenes es
AACN311206MMNNHC00.zip 101KB
AACN311206MMNNHC00.jpeg 101KB

Por favor me podría alguien asesor al respecto. Muchas gracias de antemano
 

Leer las respuestas

#1 Gustavo Larriera [MVP]
23/10/2004 - 02:38 | Informe spam
Mis respuestas van entre líneas:
Hola a todos, buen día tengo 2 tablas
CREATE TABLE [dbo].[tabla_fotos] (
[id_imagen] [int] NOT NULL ,
[foto] [image] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE TABLE [dbo].[tabla_fotos_CHAR] (
[id_imagen] [int] NOT NULL ,
[foto] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY]
GO

en cada una hice los siguientes inserts
insert into tabla_fotos
values (1,'c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.jpg')
go
insert into tabla_fotos
values (2,'c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.zip')
go
INSERT INTO TABLA_FOTOS_CHAR
VALUES (1,'c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.jpg')
GO
insert into tabla_fotos_char
values (2,'c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.zip')
go
SELECT * FROM TABLA_FOTOS
GO
1
0x633A5C67626C5C736961635C666F746F735F6D7565737472615F6368696361676F5C4141434E3331313230364D4D4E4E484330302E6A7067
2
0x633A5C67626C5C736961635C666F746F735F6D7565737472615F6368696361676F5C4141434E3331313230364D4D4E4E484330302E7A6970

SELECT * FROM TABLA_FOTOS_CHAR
GO
1 c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.jpg
2 c:\gbl\siac\fotos_muestra_chicago\AACN311206MMNNHC00.zip

Mi pregunta 1
EN LOS 2 INSERTS involucre las rutas de las imagenes ¿que guardo en la
primer tabla donde el campo es IMAGE?



En la primera tabla has guardado la ruta, pero como es una columna de tipo
Image entonces has almacenado la ruta en formato binario. Pero no es la foto
:-)

Mi pregunta 2
Que me aconsejan para manejarlas ingresaremos 5000 registros diarios y
cada
uno tendra aprox 4 imagenes.



Esta es una opinión personal y discutible: Cuando se trata de almacenar
imágenes prefiero no ponerlas dentro de la base de datos sino que prefiero
almacenar la ruta y dejar las fotos almacenadas en el file system.

El desarrollo se hara con .net de microsoft, me aconsejaron utilizar
ado.net, pues me decían que en ambas solo guardaba las rutas. Y para
almacenar las imagenes solo podía hacerlo con ado.net (bueno supongo que
podría utilizar tambien otras formas). Soy la administradora de la bd y
debo
definir el mecanismo de carga de datos, pues ahorita hay aprox 3000,000 de
datos que les debo involucrar.



Te aconsejaron en forma muy confusa. Usar ADO.NET o usar ADO no
necesariamente implica que se guarden rutas o se guarden imágenes. Todo
depende de lo que se programe.

Mi pregunta 3
si tengo un campo image, se que ese tipo de dato mide 16 bytes for the
pointer. obtuve con sp_space los espacios ocupados y el resultado fue
exec sp_spaceused tabla_fotos
go
tabla_fotos 2 40 KB 24 KB 16 KB 0 KB
exec sp_spaceused tabla_fotos_char
go
tabla_fotos_CHAR2 16 KB 8 KB 8 KB 0 KB

La información en disco del tamaño de las imagenes es
AACN311206MMNNHC00.zip 101KB
AACN311206MMNNHC00.jpeg 101KB




Efectivamente los campos de tipo Image usan un puntero de 16 bytes de tamaño
fijo en la tabla que lo define. La data de la imagen se almacena en forma
separada en otro espacio de datos apuntado por el puntero de 16 bytes.
Puedes aprender los detalles de esta arquitectura en los Books Online (BOL)
de tu instalación SQL.

Saludos

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.

Preguntas similares