GithubHelp home page GithubHelp logo

jjoselblas27 / isam Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 49.96 MB

implementacion de ISAM

C++ 0.29% PowerShell 0.02% Shell 0.01% Python 98.29% Cython 0.20% C 1.08% Meson 0.01% Fortran 0.07% Forth 0.01% Smarty 0.02%

isam's Introduction

ISAM

implementacion de ISAM

PASOS

  1. crear las clases de los nodos(index, page)
  2. crear el archivo datafile -> talvez puede ser externo
  3. crear ISAM
  4. testear

CLASES NODOS

  • IndexPage<typename key>: guardara un array de M keys, M+1 childrens y su count
  • DataPage<typename Key>: guardara N records, puntero al next y su count

datafile

  • guardara datapages con las keys y su posicion.
  • notar que estara ordenada hasta cierta posicion l. ya que despues de l estaran las paginas que se agregaran debido al desbordamiento.

ISAM

digamos que K es la cantidad de "records" en las hojas.

  • creacion del arbol. Considerare que mi heapfile tiene cuanto menos el numero de registros minimos en las hojas, esto para evitar complicaciones(despues se puede mejorar).

    • cojo los primeros k elementos y los cargo a la ram los pares key, posicion y lo ordeno.
    • con esos pares ordenados construyo las pages y lo inserto en mi data_file(mi nivel de pages), mientras puedo construir los indices para los datos de arriba(acordarse de el video)
    • Despues utilizo la funcion tipica insert para insertar los demas ya que ya tendre la estructura del arbol hecho.
  • search: busco en los indices -> me retorna una posicion en el data_file hago una buscada iterativa entre los pages y los next, si lo encuentro retorno las posiciones en el heap_file.

  • insert: hago una busqueda en el arbol, encuentro la hoja y compruebo si puedo insertar, sino me voy al next.(tal vez se puede implementar el desbordamiento con una estructura tipo stack.)

  • delete: no modifica los indices: hago una busqueda y elimino los nodos que cumplan con ese criterio. notar que puede quedarme un nodo vacio(no hay problema porque el count sera 0) si dentro de una datapage me queda un espacio vacio en medio puedo mover los datos.

  • range: dentro del heap file, se que los datapage<pares key, value> estan ordeandos hasta una posicion l. entonces selecciono en borde menor y lo busco -> data_page k, realizo una busqueda dentro de la hoja hasta encontrar los valores mayores al minimo y lo guardo, ahora continuo en la data_page k+1 y realizo lo mismo. me detengo cuando ya llege al limite o cuando ya no encuentre mayores en una busqueda en el bloque(y sus nexts).

NOTAS

  • definicion de archivos:
    • database -> archivo csv con los datos.
    • dataFIle -> archivo binario con los records(no importa el orden) y el next para cada uno.
    • heapFIle -> archivo binario con las DataPage, los cuales contienen Pares<key, position>.
    • IndexFile[i] -> archivo binario con los indices de altura i-1

PROBLEMAS

  • la funcion para insertar los nodos esta mal.
  • al parecer cuando insertas nodos y despues lo eliminas, el puntero al datafile no muestro el valor correcto posiblemente: deleteRecord, insertRecord por ahi es el problema.

actualmente: keys -> [2829, 2835] posRecord -> 962208 962208

aparecen en la misma posicion.

  • PROBLEMA: en la funcion insertDataFile no funciona la escritura. osea no actualiza el header ni el record en la posicion dada.

  • NUEVO PROBLEMA: en el insertdatafile - la posicion no es la correcta verificar el tellp.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.