Author Topic: Database Explorer  (Read 350 times)

Biterider

  • Moderator
  • Member
  • *****
  • Posts: 464
  • ObjAsm32 + ObjAsm64 = ObjAsm
    • ObjAsm
Database Explorer
« on: February 18, 2020, 01:27:32 AM »
Hi
Before I post the sources of this project, I would like to ask for some testing.  :tongue:
The attachment has two files, the database 64-bit Unicode application and a sample.dbf file.

The application is a database explorer (better name is wanted) for dbf version 3.0 files. It has some additional buildin types, but I disabled them in this test version. Memo files are also disabled.

It supports ANSI, wide and UFT8 char, numeric, timestamps, date, logic, integer (32 bit), real4, real8, real10 and auto-increment fields. This is more or less known stuff. The core is its indexing capability for all these types. A compact form of a B-Tree+ is used that does not waste as much space as other commercial products. In terms of speed, it is fast enough. On my computer, 2 million unsorted records can be indexed in about 10 seconds.

An interesting feature is the ability to mutate the database. You can change the definition of a field type and its position and mutate the database content accordingly. Changing the field settings for existing data must be done with care to avoid data loss.  :icon_idea:

Since queries are database-dependent, they are implemented as APIs of the database engine.

The source code can be compiled for 32 or 64 bit, ANSI or Unicode.

If you have databases in DBF format, please try it out. Before making changes to the database, please make a copy first.

Biterider

Biterider

  • Moderator
  • Member
  • *****
  • Posts: 464
  • ObjAsm32 + ObjAsm64 = ObjAsm
    • ObjAsm
Re: Database Explorer
« Reply #1 on: February 23, 2020, 03:44:42 AM »
Hi
The last stone of the Database engine is now in place. Memo blocks are now implemented using APIs. They can store large ANSI/Unicode/UTF8 texts, binary data such as bitmaps, sound, vibration or other signals, etc.   :eusa_dance:

The Database and the NetCom engine are main components of a larger project. The third component is a smart phone application to send information over the net to the NetCom Server and eventually send back the result of some computation.

After completing the first 2 components, I’m now starting with the mobile app. If anyone is interested and has experience using Kotlin or Xamarin, please let me know.  :biggrin:

Biterider

HSE

  • Member
  • *****
  • Posts: 1252
  • <AMD>< 7-32>
Re: Database Explorer
« Reply #2 on: March 07, 2020, 07:47:52 AM »
Hi Biterider!

Can You build de App in 32bit? There is nothing to test in 64bit machine  :biggrin:

Thanks.

Biterider

  • Moderator
  • Member
  • *****
  • Posts: 464
  • ObjAsm32 + ObjAsm64 = ObjAsm
    • ObjAsm
Re: Database Explorer
« Reply #3 on: March 07, 2020, 08:20:53 AM »
Hi HSE
Here it is. Thanks for testing!
Biterider

HSE

  • Member
  • *****
  • Posts: 1252
  • <AMD>< 7-32>
Re: Database Explorer
« Reply #4 on: March 07, 2020, 10:07:03 AM »
Pretty funny!  :biggrin:

Code: [Select]
CPU Disasm
Address   Hex dump          Command                             
012DA9B0  |.  C5FC:103D D0D |VMOVUPS YMM7,QQWORD PTR DS:[12ED3D0] 
012DA9B8  |.  C5FC:1138     |VMOVUPS QQWORD PTR DS:[EAX],YMM7   
012DA9BC  |.  C5F8:1035 F0D |VMOVUPS XMM6,DQWORD PTR DS:[12ED3F0]
012DA9C4  |.  C5F8:1170 20  |VMOVUPS DQWORD PTR DS:[EAX+20],XMM6

HSE

  • Member
  • *****
  • Posts: 1252
  • <AMD>< 7-32>
Re: Database Explorer
« Reply #5 on: March 20, 2020, 06:41:49 AM »
Hi Biterider!

I ran again 64bit version (which don't require AVX). A dialog open when Pack is activated, but the dialog close alone and is not possible to see what it is.

Regards. HSE

Biterider

  • Moderator
  • Member
  • *****
  • Posts: 464
  • ObjAsm32 + ObjAsm64 = ObjAsm
    • ObjAsm
Re: Database Explorer
« Reply #6 on: March 20, 2020, 07:15:44 PM »
Hi HSE
I tried to get as close as possible to the original dBase III commands. (See https://iti-copa.weebly.com/uploads/1/7/9/9/1799894/dbase_iii_plus_tutorial.pdf as reference).
The "Pack" command (Page 7 of the above link) deletes the flagged records from the database.

I coded a new dialog called DialogProgress to show the progress of large or multiple operations. This dialog has two layouts (See attachment), depending on whether it has a single or multiple operations to perform. Additionally I used a RichEdit control to display the dialog text that gives more control over the used fonts.

Since your PC seems to be very fast, the "Pack" command ended very quickly and you can only see that the dialog is displayed and closed immediately. Maybe I should introduce some kind of trigger. This way, very short operations show no dialog at all.

Regards, Biterider

HSE

  • Member
  • *****
  • Posts: 1252
  • <AMD>< 7-32>
Re: Database Explorer
« Reply #7 on: March 20, 2020, 11:23:22 PM »
Since your PC seems to be very fast
No. The database is short  :biggrin:

Thanks  :thumbsup:

Biterider

  • Moderator
  • Member
  • *****
  • Posts: 464
  • ObjAsm32 + ObjAsm64 = ObjAsm
    • ObjAsm
Re: Database Explorer
« Reply #8 on: March 21, 2020, 12:21:21 AM »
Hi HSE
The test table is for sure to small. I uploaded a bigger one here http://objasm.x10host.com/DwnFiles/Cities.zip.
The content is nothing special. It is simply something with a bigger content I have used while I was developing the database.

Biterider