Win a copy of Modern JavaScript for the Impatient this week in the Server-Side JavaScript and NodeJS forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Ron McLeod
  • Paul Clapham
  • Bear Bibeault
  • Junilu Lacar
Sheriffs:
  • Jeanne Boyarsky
  • Tim Cooke
  • Henry Wong
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • salvin francis
  • Frits Walraven
Bartenders:
  • Scott Selikoff
  • Piet Souris
  • Carey Brown

Suggestions for embedded databases

 
Ranch Hand
Posts: 86
1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If anyone has seen my previous post.  My project is going to incorporate an embedded data base right in the application.  Can someone suggest a good database for this?  Or even things I should look for when choosing a database.  I'm building this program in stages.  The first stage will have a complete running program where a single user can log in, and operate the program.  All data is stored locally.  

Future releases I intend to design a server that contains a database, similar to the one embedded in the client program.  On the future client server version of the program I was thinking of using log in control to control database security.  For example when a user logs into the client, the server will send data that is directly related to the user.  This is the data that is generally changed.  The server will also block any future attempts of the user logging on a different machine, until the first one is logged of.  When the user logs off then the data lat has been changed by the user will then be sent to the server to update the master.  Since the common data between all the clients is minimal I could simply use a simple request -->send and develop some sort of data quality control on the server end.  Fortunately the data I plan to use that is common between all the users is only a fraction of the total amount of data.  The majority of the data users access is not pertinent to other users.  By limiting the users to logging in on one computer at a time then I can control when and how the data being changed is done.

I added the paragraph about the future design because having as little changes needed to upgrade from a single user/computer software to the client/server model would be great and might affect someones recommendation.

Thank You in Advance!  You guys have helped me in not only the individual element problems but also in how I am approaching the operation and control of my program.  
 
Marshal
Posts: 15870
265
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Try searching for lightweight databases for Java -- you'll find there are a number of options to choose from.
 
Junilu Lacar
Marshal
Posts: 15870
265
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Dwayne Barsotta wrote:Future releases I intend to design a server that contains a database, similar to the one embedded in the client program.


Then it's important that you start programming to interfaces instead of implementations now so that it will be easier to replace your embedded database with a remote database. Also read up on layered application architectures and pay attention on how to design a Data Access layer and its relationship to other layers like the Application/Service layer and the Domain layer.  Many people these days favor Eric Evans' Domain Driven Development technique which defines four general layers of architecture but there are many different variations to the basically the same concept of layering. I also like ideas from Alistair Cockburn's hexagonal architecture.
 
Dwayne Barsotta
Ranch Hand
Posts: 86
1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you for all the research ideas.  One thing I was thinking about the transfer from single use to client/server is that I don't really need to replace the database.  I could maintain the stand alone one on the computer. When the client opens, a thread can download data that is different on the server so they match. Then on shut down send the changed data back to the server.  Since I plan to restrict logging in on Multiple computers per account I don't need to worry about more then 2 different versions.  On client log in I can assume the server data is accurate on client log off assume client data is right.
 
Junilu Lacar
Marshal
Posts: 15870
265
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Those ideas are fine but don't bite off more than you can chew. Henry Ford didn't start out by building a muscle car like the Mustang equipped with a 3.7L V6 with twin independent variable camshaft timing (Ti-VCT) technology, delivering 300 hp and 280 lb.-ft. of torque. He came out with the relatively way simpler and cheaper Model T. So start out simple, learn about your system and understand exactly what's good and not so good about it. Then grow it out by improving what's already good while also replacing or fixing what's not so good. Do this consistently over many iterations and you may yet get to where you imagine you will someday get.
 
Message for you sir! I think it is a tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop
https://coderanch.com/wiki/718759/books/Building-World-Backyard-Paul-Wheaton
    Bookmark Topic Watch Topic
  • New Topic