FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Campo "tipo Bits" en Firebird
Buenas, me explico.
Necesito poner en un campo de una tabla los números que me salen de un sorteo. Es decir, siempre salen 10 números en cada sorteo (sobre un universo de 90 números). La idea era poner un 0 o un 1 según el valor que haya salido en la posición correcta. De ahí, si salieron los números: 10, 12, 14, 16; tendría algo así. (El universo lo hago de 20 para achicar la cosa) 00000000010101010000 <-- Hay 20 posiciones y los "1" marcan los lugares que salieron sorteados. Ahora bien, este tipo de notación ¿cómo la pongo en Firebird 2.5? ¿Solamente tengo la opción de un varchar(20)? Teniendo en cuenta que después tengo que hacer algunas cosas con eso, como por ejemplo: "decir cuáles son los números que salieron en pantalla". Una de las cosas que también debo hacer con esto en un "AND". Esto sería, cierta progresión de números (de 20 lugares, 0 o 1) contra otras que están almacenadas (de 20 lugares, 0 o 1) Si tengo otra progresión, digamos: 00100100010010000000; tengo que hacer (00100100010010000000 AND 00000000010101010000) y ver el que salió. ¿Cómo es conveniente guardar estos datos para luego poder manipularlos de la mejor manera? Bueno, espero haber sido claro. Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. Última edición por santiago14 fecha: 05-05-2017 a las 22:41:19. |
#2
|
||||
|
||||
Parece que FB tiene soporte parcial, usando un campo integer y funciones de BIT:
https://stackoverflow.com/questions/...-to-bit-in-sql
__________________
El malabarista. |
#3
|
||||
|
||||
¿Y por qué no guardas los números tal cual, en campos integer?
Recuerdo haber guardado cosas en bits, pero de eso hace muchos años, cuando el espacio en disco era muy limitado, los primeros discos duros que usé eran de 4 Megas |
#4
|
||||
|
||||
Si entiendo, de lo que hablas no es de almacenar un valor binario como tal si no de guardar el resultado del sorteo de una manera que solo tu sistema lo logre entender y que en este caso se parece a un valor binario.
(10 posiciones) 1 = 1000000000 2 = 0100000000 3 = 0010000000 .. 10 = 0000000001 Y si el resultado del sorteo es 4, 7, 10 almacenas la cadena 0001001001. No se porque lo harás así, pensaría que porque de esta manera quien observe los datos directamente en la base de datos no los comprenderá inmediatamente y al verlo que se parecen a un binario pensará que es eso y no podrá obtener el resultado del sorteo. Solo es especulación. Si es este el caso, Pues creo que ya tienes una manera bastante curiosa de hacer las cosas y las rutinas que interpretan estas cadenas no creo que sean demoradas. Otra posibilidad sería guardar los valores del sorteo cifrados en la DB y así hasta podrías almacenarlos en diferentes columnas o en tablas detalles. Seoane en su web tiene bibliotecas muy buenas para esto Si no es el caso, olvídalo
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#5
|
||||
|
||||
Cita:
http://blog.getspool.com/2011/11/29/...redis-bitmaps/ Ahora que he leido un monton sobre arquitecturas de bases de datos, los bitmap index permiten de forma eficiente hacer un monton de cosas: https://stackoverflow.com/questions/...ndexes-helpful En especial, acelerar un monton de tareas relacionadas con analiticas, optimizar consultas del tipo AND, OR, NOT, COUNT, etc. ------ Cita:
SQL es un lenguaje relacional, y tiene excelente soporte para tareas de conjuntos. La razon de usar bitarrays es para obtener eficiencia a escala y formas creativas de hacer estadisticas.
__________________
El malabarista. Última edición por mamcx fecha: 06-05-2017 a las 00:16:32. |
#6
|
||||
|
||||
Cita:
Edito: Esa fue la segunda vez, la primera vez fue antes, en 1987, ahí sí que lo usé para ahorrar espacio en disco. |
#7
|
||||
|
||||
Tambien los Set:
http://www.delphibasics.co.uk/RTL.asp?Name=Set Son una implementacion de bitarray. Asi que es algo muy usado en Pascal
__________________
El malabarista. |
#8
|
||||
|
||||
Cita:
|
#9
|
||||
|
||||
Jajajajja. La razón no es "seguridad mediante la oscuridad", la razón es mas simple.
Cada sorteo tiene alrededor de 200.000 cartones, los cuales pueden tener 1 o varias combinaciones de 10 número cada uno. Todo esto con un universo de 90 números (1 al 90) para el sorteo. Si mi tabla de registros de cartones tuviera 10 campos, cada uno INTEGER, para un único sorteo necesitaría 4 bytes * 200.000 registros = 800.000 bytes que son 781 KBytes aprox por sorteo. Si bien no es tanto, suena mas engorroso trabajar con esto que con un valor único que contenga a los valores en un solo campo (bueno, no se) Si de repente, mi cliente decide hacer un sorteo con 12 números (o de 8), en lugar de 10, ya tendría que pensar en una estructura (tabla) propia para poner los números de la generación de cartones. Para esto tendría que poner otra tabla. En realidad, estoy buscando la mejor manera de registrar en la BBDD los números correspondiente a los cartones que voy a generar. Son muchos por sorteo y estoy pensando a futuro, para no tener que penar con estructura monstruosas. De ahí que acepto todas las sugerencias que me puedan dar al respecto. Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#10
|
||||
|
||||
#11
|
||||
|
||||
Así eran aquellos discos duros en los tiempos mozos de Casimiro:
|
#12
|
||||
|
||||
Ese era ya el modelo nuevo, con bus de datos de 2 bits
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿No funciona el componente "TWebBrowser" en Delphi 64 bits? | dec | Varios | 5 | 15-09-2016 13:53:03 |
Error "Error while trying to open file" al conectar Server Centos 6.4 64 bits | lavtaro | Firebird e Interbase | 25 | 26-01-2014 09:48:19 |
Sobre componentes del tipo "TChart" o similares, preguntas varias | dec | Gráficos | 2 | 22-11-2007 13:50:47 |
Tipo de Variable."String" ó "Double" | UTECYBER | OOP | 7 | 15-12-2003 20:25:39 |
Problemas con Query campo tipo Date "Oracle" | Marrano | Oracle | 4 | 27-05-2003 12:09:56 |
|