Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

VARCHAR2 vs NVARCHAR2. ¿Cuándo utilizarlo?

Estas en el tema de VARCHAR2 vs NVARCHAR2. ¿Cuándo utilizarlo? en el foro de Oracle en Foros del Web. Hola: Tenemos una aplicación en la que la mayoría de los datos de tipo char están definidos como VARCHAR2 n, byte. Hemos visto que al ...
  #1 (permalink)  
Antiguo 14/03/2011, 04:22
 
Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 1 mes
Puntos: 1
VARCHAR2 vs NVARCHAR2. ¿Cuándo utilizarlo?

Hola:

Tenemos una aplicación en la que la mayoría de los datos de tipo char están definidos como VARCHAR2 n, byte.

Hemos visto que al utilizar caracteres especiales, obteníamos un error de tipo valor demasiado largo.

Buscando soluciones, el analista ha propuesto cambiar la definición de dichos campos a NVARCHAR2 y yo, que recordaba de otro proyecto que debía permitir el uso de caracteres de todo tipo, es decir, chinos, rusos, españoles,franceses... y no utilizaba NVARCHAR2 sino VARCHAR2, he propuesto cambiar la definición a VARCHAR2 n char.

He estado leyendo diferente documentación y buscado en el foro de Oracle y no termino de ver qué ventaja tiene la utilización de NVARCHAR2 en lugar de VARCHAR2 si la definición del parámetro NLS CHARACTERSET de la BBDD está preparado para admitir cualquier caracter, en principio el juego que tenemos ahora es UTF8.

Como ventaja de VARCHAR2 n CHAR, veo que el espacio de disco necesario puede ser menor, ya que para caracteres especiales utilizará 2 bytes mientras que para caracteres normales se quedará en 1. Sin embargo, el tipo NVARCHAR2 ocupa siempre 2 bytes.

En segundo lugar, esta pequeña variación en la definición no me obliga a borrar todos los datos actuales mientras que el cambio de tipo de dato me obliga primero a borrarlo todo.

Por último, en este proyecto sólo se van a utilizar 2 idiomas, inglés y español pero los equipos pueden estar en cualquier parte del mundo con cualquier configuración de idioma e incluso en la oficina tenemos equipos instalados con idioma español y otros en inglés.

Si he entendido bien el tipo NVARCHAR2, la N viene dada por el sistema que utiliza el cliente. ¿Quiere decir eso que si un usuario tiene un sistema configurado con un unicode que no reconoce ñ o tildes, pero cambia el teclado para poder insertar esos caracteres no le va a dejar?

Un saludo y gracias.

Última edición por JaimeLG; 14/03/2011 a las 05:11
  #2 (permalink)  
Antiguo 16/03/2011, 02:19
 
Fecha de Ingreso: abril-2008
Mensajes: 93
Antigüedad: 16 años
Puntos: 10
Respuesta: VARCHAR2 vs NVARCHAR2. ¿Cuándo utilizarlo?

Mi opinión es la siguiente:

Si en la BBDD tengo muchos campos con caracteres especiales, cambio el NLS de la BBDD
Si tengo pocos, utilizo para ellos el tipo NVARCHAR2.

La razón es que si cambio la BBDD entera, esta aumentará su tamaño, los indices trabajarán peor, etc. por lo que si tengo pocos campos no es aconsejable, pero si son muchos, no me quedará más remedio.

Otro problema de los NVARCHAR2, es que no todos los lenguajes y herramientas lo soportan, por lo que si tienes una aplicación antigua, podrías tener problemas.

También podríamos tratar de manera especial las BBDD de reducido tamaño, en las cuales ni el tamaño ni el rendimiento serán razones como para desaconsejar el cambio en la propia BBDD.

En definitiva, cada caso es único y desgraciadamente no hay una receta universal.

Etiquetas: nvarchar, varchar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:44.