none
database management software

    Question

  • I have a project to design a data management software based on file system. It should be working like a mini database management system. Where could I get documents on this topic? Please give the book name or the link.

    Thanks,
    Monday, July 27, 2009 11:52 AM

Answers

  • Ah ok, your boss for some bizzare reason wants a flat file to store all the "database" in, for instance a .dat file.

    You can do this with SQLLite since as far as I know it stores its db as a file , but you get the leverage of proper DB operations.

    Additionally there are programming interfaces for Access<->C++:

    http://msdn.microsoft.com/en-us/library/cc811599.aspx

    I would strongly advice against writing your own system, leverage stuff that already exists out there as it's been run around the block a few times. Writing your own may sound fun, but isn't when a bug erases your whole database!

    Regarding Access speed I was presuming that multiple users where accessing the same Access DB, but your description seems to imply it is single user only. (If it is multiuser it needs to live on a single server somewhere otherwise you'll have issues with merging/changing data).

    Thanks
    Wednesday, July 29, 2009 11:46 AM

All replies

  • There's no point in re-inventing a database engine.  Use an existing one, SQL Server Compact is very mini.  SQLite is another one, probably better suited to use from unmanaged C/C++.

    Hans Passant.
    Monday, July 27, 2009 1:04 PM
  • I know but the management asked me to do that, before I used access, right now I am halted using it again for its performance. But any file index technolgy is worth to learn, right?

    Thanks,
    Monday, July 27, 2009 1:12 PM
  • Knowing how to program in assembly is worth to learn too.  Some day.  You'll have to set your own priorities, we can't help you with that.

    Hans Passant.
    Monday, July 27, 2009 1:25 PM
  • Your management needs to specify requirements. Why do they want data management software designed by you? If they can explain that then they will probably get a much better answer than can be provided without that explanation. Is it becasue they want something cheap? Is it because they think nothing is available that has some specific features? Is it because they think it is the only way to protect the data, or the only way to protect the application design? Or do they not have other work for you and they are desperate to find something for you to do?

    Or perhaps this is actually a school assignment; students are often asked to write applications that don't need to be written. Projects such as that are worthwhile for educational purposes and if that is what you are doing then you might get more help if you are clear. People that help others are reluctant to do class assignments but you might get some useful guidance if that is all you are asking for.
    Sam Hobbs; see my SimpleSamples.Info
    Monday, July 27, 2009 7:12 PM
  • Quote>But any file index technolgy is worth to learn, right?

    Google ISAM.

    - Wayne
    Monday, July 27, 2009 11:45 PM
  • ISAM is old technology, originally designed by IBM for use in big IBM "mainframe" computers. IBM later developed the relational concept. The parts of ISAM that are relevant here are conceptual, and the concepts are available in many database designs and implementations. Except for the concept of use of a key to the data, what more is relevant?

    At the time when ISAM was invented, hardware was very expensive, including processors, disk drive memory and main memory. Depending on the requirements, the best design might be different. Depending on the amount of data and other criteria, it might be more efficient to keep the keys (indexes) in memory and use a STL class such as std :: map to index into the data. It is entirely possible to maintain all the keys and data in memory, possibly using memory-mapped files.
    Sam Hobbs; see my SimpleSamples.Info
    Tuesday, July 28, 2009 3:22 AM
  • Thanks for your replies,
    Is there any small and cheap COTS real-time database you would like to recommend?
    Tuesday, July 28, 2009 5:11 PM
  • COTS?

    How does a real-time database differ from a regular database?
    Tuesday, July 28, 2009 5:29 PM
  • I also don't know what COTS is nor what a real-time database is that differs from other databases.

    Most versions of Windows are not real-time operating systems, so if you are not developing for Windows then you need to find a more relevant forum.

    So are you saying that your manager would consider pre-existing database software that is available for free or for a small fee?
    Sam Hobbs; see my SimpleSamples.Info
    Tuesday, July 28, 2009 6:40 PM
  • Quote>I also don't know what COTS is ...

    "Commercial Off The Shelf"

    http://en.wikipedia.org/wiki/Commercial_off-the-shelf

    - Wayne
    Tuesday, July 28, 2009 8:44 PM
  • Thank you, Wayne. I hope that the person asking the question understands that there are many acronyms that others are not familiar with. I try not to use acronyms that the person I am communicating with does not understand.
    Sam Hobbs; see my SimpleSamples.Info
    Tuesday, July 28, 2009 9:40 PM
  • Under the category of computing software, COTS can be either Commercial-off-the-shelf or Cash On The Spot.
    I am not quite understanding real-time database either, here is the link
    http://en.wikipedia.org/wiki/Real_time_database
    The excuse the manager asked me to index and search a storage file is that access database is slow, if I can find a cheap so-call real-time database, my code doesn't have to bear the name of Cash On The Spot.
    Tuesday, July 28, 2009 11:40 PM
  • Getting information from you is very difficult. When I said that most "versions of Windows are not real-time operating systems", I sure thought you would either tell us what version of Windows you are developing for or go to some other forum.

    What version of Windows you are developing for?


    Sam Hobbs; see my SimpleSamples.Info
    Wednesday, July 29, 2009 12:25 AM
  • Let me have a go:

    We can't offer much more advice until you explain a little better what you have currently, what you are been asked for and why.

    But anyhow a few shots in the dark:

    • You have an Access "Database" that is very slow and rubbish? (nothing unsurprising there!).
    • "They" have asked you to fix this by making some other DB system?
    • You need a UI to browse this data?

    If so export the data and import it into a PostgreSQL/MySQL/SQLLite database.

    Make a front end to present the data however the users require. I suspect the Access DB has some forms for viewing the data? If so it is a case of copying these, although an Windows Explorer type app might be more useful. (That is a tree/list view).

    Thanks
    Wednesday, July 29, 2009 7:58 AM
  • This operation system is WindowsXP and our software running on it bears a name of real-time. I personally have no problem with the speed of Access as I can always use thread and buffer to leverage its speed. The only problem I have on Access is there is no way to create the database file in C++ code, which causes problem for frequently upgrading on many different machines.

    The current project needs a functionality of seaching and reporting history data, which is exactly a database's job. But the manager wants it to be done on a plain storage file. I have no problem with doing the reporting line by line in C++ from scratch.
    But I have no know-how in adding and deleting record on a storage file, right now I can only load the whole file and write the whole file afterwards, which is not feasible to this project as it data may cover multiple years.
    If I cannot find a faster real-time database, I need to know the techology of adding, deleting and searching record on a CFile.
    All in all not all the data are stored in database, so learning file-based indexing and editing is not a bad thing.

    Thank your guys,
    Wednesday, July 29, 2009 11:38 AM
  • Ah ok, your boss for some bizzare reason wants a flat file to store all the "database" in, for instance a .dat file.

    You can do this with SQLLite since as far as I know it stores its db as a file , but you get the leverage of proper DB operations.

    Additionally there are programming interfaces for Access<->C++:

    http://msdn.microsoft.com/en-us/library/cc811599.aspx

    I would strongly advice against writing your own system, leverage stuff that already exists out there as it's been run around the block a few times. Writing your own may sound fun, but isn't when a bug erases your whole database!

    Regarding Access speed I was presuming that multiple users where accessing the same Access DB, but your description seems to imply it is single user only. (If it is multiuser it needs to live on a single server somewhere otherwise you'll have issues with merging/changing data).

    Thanks
    Wednesday, July 29, 2009 11:46 AM
  • Perhaps you might give MyDB a try-out. If it seems satisfactory, the corporate licence with
    full source code is less than US$300.
    http://www.mghsoft.com/index.html

    Also consider Mix Software's C/Database Toolchest:
    http://www.mixsoftware.com/product/database.htm

    "The libraries provide a complete set of database management functions. More than 150 functions
    support file operations such as create, open, and close; and record operations such as add, find,
    modify, and delete"

    US $49.95 for Win32 (manual + disk with full source code)
    US $10.00 for each additional platform (disk only with full source code)

    Read the tutorial online:
    http://www.mixsoftware.com/product/db/contents.htm

    - Wayne
    Wednesday, July 29, 2009 12:48 PM
  • That is exactly what I am looking for, thank you very much.

    Wednesday, July 29, 2009 1:06 PM