It is currently Fri Apr 19, 2024 2:33 pm

All times are UTC - 8 hours [ DST ]




Post new topic Reply to topic  [ 22 posts ]  Go to page 1, 2  Next
Author Message
Offline
 Post subject: Database engines
Post #1 Posted: Sun Sep 12, 2010 10:06 am 
Oza

Posts: 3655
Liked others: 20
Was liked: 4630
I have thought for some time about turning some parts of GoGoD other than the sgfs into database format (in particular the Names Dictionary) using one of the standard packages such as Access.

What I can't work out from an initial survey in books is whether it is possible to produce this in such a way that makes it possible for the end user to run the database without himself having bought Access or whatever (i.e. the application saves with the data some sort of truncated engine that means he can run only that database and not create new databases). I know this sort of thing is possible for PowerPoint presentations. Is it possible, and if so does the user have some limited functionality other than simply reading (basic edits, etc)?

Everything I've read about doing this in SQL or Java seems to point to having to access an engine on the internet, even on my own machine. I don't want to do that. I assume I've misunderstood, but I suppose it might be a sort of cloud computing project. If Access (by far my first choice) is useless for this purpose, is it possible to do it entirely offline in SQL or Java (which will still require several large whiskies even to contemplate), and would the end product be usable on other people's machines without software purchases or downloads by them?

Actually, I'm not entirely sure even whether ordinary Java programs run on other pcs without downloading the Java virtual machine. Do they?

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #2 Posted: Sun Sep 12, 2010 10:12 am 
Lives in sente
User avatar

Posts: 1072
Location: Stratford-upon-Avon, England
Liked others: 33
Was liked: 72
Rank: 5K KGS
GD Posts: 1165
KGS: Dogen
Probably the best way would be to make a web-based database, using MySQL and PHP on a server that you control. Not only does this mean that anyone can access it from any platform, but you can also update it easily.

However, I would imagine that you may want to only provide access to purchasers of GoGoD. You could have a password that you change with each new version, perhaps.

I don't think there's any reader for Access.

Another alternative is to provide it as a csv file that could be imported into any database or spreadsheet program.

_________________
My blog about Macs and more: Kirkville

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #3 Posted: Sun Sep 12, 2010 10:23 am 
Lives in sente
User avatar

Posts: 914
Liked others: 391
Was liked: 162
Rank: German 2 dan
I would most certainly not use Access.

There are quite a few free databases available now, e.g. PostgreSQL, MySQL, SQLite.

Do you want to have a (cross-platform) database application on the CD?

_________________
A good system naturally covers all corner cases without further effort.

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #4 Posted: Sun Sep 12, 2010 10:33 am 
Honinbo

Posts: 9545
Liked others: 1600
Was liked: 1711
KGS: Kirby
Tygem: 커비라고해
John Fairbairn wrote:
...Is it possible, and if so does the user have some limited functionality other than simply reading (basic edits, etc)?


I would use mysql (as kirkmc mentioned already), which is free.

John Fairbairn wrote:
Everything I've read about doing this in SQL or Java seems to point to having to access an engine on the internet, even on my own machine. I don't want to do that. I assume I've misunderstood, but I suppose it might be a sort of cloud computing project. If Access (by far my first choice) is useless for this purpose, is it possible to do it entirely offline in SQL or Java (which will still require several large whiskies even to contemplate), and would the end product be usable on other people's machines without software purchases or downloads by them?

Actually, I'm not entirely sure even whether ordinary Java programs run on other pcs without downloading the Java virtual machine. Do they?


I have a couple of comments:

1.) Java applications run on the Java virtual machine, which is what allows for them to be platform independent. Some OS installs will install Java by default (eg. sometimes when somebody installs linux), but typically, the user needs to install Java to run a java application. That's why, if you try to use KGS, for example, you need to install Java first. There are also different versions of Java, so if you write something in Java 6 and somebody is using Java 5, they could get a runtime exception if you use functionality that is specific to Java 6. Anyway, this is usually not a big concern, because Java is also free - a lot of people don't mind using KGS, after all.

2.) If you are going to just put information into SQL, and you don't want to have others connect to your own database (but rather use their own), you can make a SQL script, which will create the database, and insert all of the information that you want to put in. If you do this, the user juts has to setup MySQL (for example), and run the database script. Then their local database will be populated with the information that you've provided. They have freedom to delete, insert, or edit entries as they wish, because it's their own local database.

3.) You can write the SQL script in such a way that it will work with different database vendors. There are some differences in SQL across database vendors, but if you write SQL in a database agnostic way - or even by providing separate scripts for different databases, the user can use your script to put the information into their database, regardless of which database they prefer to use. If they like MySQL, they can run a script to populate their MySQL database. If they prefer MSSQL, they can do the same for their MS database, etc.

_________________
be immersed

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #5 Posted: Sun Sep 12, 2010 10:36 am 
Beginner

Posts: 5
Liked others: 0
Was liked: 0
Rank: 1d
I would go with an embedded database. There are many options that are free and can be used in commercial applications. SQLite is a popular one for C/C++/C#, hsqldb is a Java one but I've never used it. Have someone write you a nice and simple .NET or Java front end to view and manipulate the data. The embedded database does not require anything to be installed or run. It's either linked directly into your program, or sits in the same directory as a DLL or Java file. A binary file of some sort contains the actual data. When you launch your program, the embedded database engine opens the binary file and allows you to query and modify it using SQL. Very easy. Have some datagrids to show the results and some simple buttons and search boxes. You would probably write a different front end for each type of database you want to produce. As long as it's simple and just lets you search for names or facts displayed on a grid, it will be very quick to develop.

Java programs do require the Java VM, if your users don't have it send them to Java.Com and tell them to click the big red button.

A .NET program requires the .NET framework, which is practically required these days and is already installed on most users computers. If not, a quick trip to microsoft.com fixes that.

I am not a Mac user and not really a Java programmer, but I'm guessing if you wrote the thing in Java with hsqldb it would run on PC and Mac. Writing it in .NET would make it unusable by Mac users, but they are a small percentage of the market.


Last edited by BrianB on Sun Sep 12, 2010 10:41 am, edited 1 time in total.
Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #6 Posted: Sun Sep 12, 2010 10:39 am 
Honinbo

Posts: 9545
Liked others: 1600
Was liked: 1711
KGS: Kirby
Tygem: 커비라고해
+1 to BrianB's idea. I had imagined just providing a SQL script so the user could setup the information that they wanted on the database of their choice, but I think BrianB's choice is more convenient. With his idea, the user doesn't have to worry about installing separate software on their own.

_________________
be immersed

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #7 Posted: Sun Sep 12, 2010 10:40 am 
Gosei

Posts: 1348
Location: Finland
Liked others: 49
Was liked: 129
Rank: FGA 7k GoR 1297
Access is about as far away from "standard package" as you can get. As others have pointed out, MySQL or PostgreSQL is your best bet.

IRL there is no such thing as standard SQL (although in theory it exists). What I would do is write the software against either MySQL or PostgreSQL, and let the user choose whether he downloads the software with DB embedded, or uses a DB he has already installed in his computer. You should, however, read the license of the DB very carefully if you decide to ship it with your code. I believe it's ok with Postgre, but not with MySQL.

_________________
Offending ad removed

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #8 Posted: Sun Sep 12, 2010 11:05 am 
Dies in gote
User avatar

Posts: 38
Location: Cachan, Paris, France
Liked others: 0
Was liked: 14
Rank: FFG 5k
SQLite has already been mentioned. It is the lightest in the SQL family. No server required. It is used for instance by Firefox to store its internal data.

Several managers exist including one as an add-on to Firefox. If you provide a database, advanced users would have complete access to the database but you would have to develop an interface to browse the database for less advanced users. SQLite is interfaced with all languages you could think to use (Jave, PHP, C, C++, etc.)

Actually, SQLite is also the database used by libkombilo and thus Drago. The source of libkombilo is free and well documented and could be a start for storing and retrieving game information. Browsing the data is part of Drago database features. Not open source but I can perhaps help.

_________________
Drago is freeware

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #9 Posted: Sun Sep 12, 2010 12:06 pm 
Lives in sente
User avatar

Posts: 914
Liked others: 391
Was liked: 162
Rank: German 2 dan
BrianB wrote:
A .NET program requires the .NET framework, which is practically required these days and is already installed on most users computers. If not, a quick trip to microsoft.com fixes that.


This is just wrong. .NET only works reliably for Windows users. There are many Windows users, but not as many as you think (especially in the more geeky parts of the online world), and their market share is in decline.

_________________
A good system naturally covers all corner cases without further effort.

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #10 Posted: Sun Sep 12, 2010 12:58 pm 
Beginner

Posts: 5
Liked others: 0
Was liked: 0
Rank: 1d
Harleqin wrote:
This is just wrong. .NET only works reliably for Windows users. There are many Windows users, but not as many as you think (especially in the more geeky parts of the online world), and their market share is in decline.


Not to derail the thread, but when I'm talking about commercial application development and say things like "most users" I am not even considering non Windows users. As of Aug 2010 Windows XP, Vista, and 7 users were reported as 90% of market share according to multiple popular web browser user agent tracking companies. MacOS is 5%. The rest are assorted mobile devices and "other". I feel they can safely be ignored as spending development time to address <10% of the market is not worth the cost. I understand the ideology behind your statements, but I feel MacOS is not significant enough to spend time on. When you're writing software for a modern desktop based commercial package, Microsoft based users are all you need to consider unless you want to be 'nice'. Now don't flame me. :)

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #11 Posted: Sun Sep 12, 2010 1:10 pm 
Gosei

Posts: 1348
Location: Finland
Liked others: 49
Was liked: 129
Rank: FGA 7k GoR 1297
BrianB wrote:
I feel they can safely be ignored as spending development time to address <10% of the market is not worth the cost.

Why develop for 90%, when you can develop for 100% with same effort?

_________________
Offending ad removed

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #12 Posted: Sun Sep 12, 2010 1:10 pm 
Lives in sente
User avatar

Posts: 1072
Location: Stratford-upon-Avon, England
Liked others: 33
Was liked: 72
Rank: 5K KGS
GD Posts: 1165
KGS: Dogen
BrianB wrote:
Harleqin wrote:
This is just wrong. .NET only works reliably for Windows users. There are many Windows users, but not as many as you think (especially in the more geeky parts of the online world), and their market share is in decline.


Not to derail the thread, but when I'm talking about commercial application development and say things like "most users" I am not even considering non Windows users. As of Aug 2010 Windows XP, Vista, and 7 users were reported as 90% of market share according to multiple popular web browser user agent tracking companies. MacOS is 5%. The rest are assorted mobile devices and "other". I feel they can safely be ignored as spending development time to address <10% of the market is not worth the cost. I understand the ideology behind your statements, but I feel MacOS is not significant enough to spend time on. When you're writing software for a modern desktop based commercial package, Microsoft based users are all you need to consider unless you want to be 'nice'. Now don't flame me. :)


The problem with that logic is it lumps together business users, who never buy software (other than what IT departments need) and home users, who would be the target for such software. You can easily get rid of 75% of those computers because they are beige boxes used in businesses.

Apple's current market share is about 7.5% (Q2 2010) with growth in units over 30% per quarter. Among home users in the US, Apple's penetration is probably around 25%, especially higher among younger people and students.

And, bear in mind that a huge amount of web traffic these days comes from mobile devices, so your figure of 90% for Windows - which you just pulled out of the air - is over-estimated. In March, mobile devices made up some 17% of web traffic (http://arstechnica.com/apple/news/2010/ ... way-up.ars). And among geekier users, as you can see if you scroll down in that article, the percentage of iOS traffic is huge. (67% for Ars; in April, Wired reported 26% of their traffic came from the iPad alone: http://www.wired.com/gadgetlab/2010/04/ ... d-traffic/)

Interestingly, for professional reasons, I've been in touch with one of those companies that tracks web usage. The main way they track these numbers are by getting users to install their spyware, I mean software, and they're not doing well at all getting Mac users to install such tracking software. For this reason, their Mac OS X numbers are very low, much lower than reality.

_________________
My blog about Macs and more: Kirkville

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #13 Posted: Sun Sep 12, 2010 1:13 pm 
Gosei
User avatar

Posts: 1639
Location: Ponte Vedra
Liked others: 642
Was liked: 490
Universal go server handle: Bantari
BrianB wrote:
I am not a Mac user and not really a Java programmer, but I'm guessing if you wrote the thing in Java with hsqldb it would run on PC and Mac. Writing it in .NET would make it unusable by Mac users, but they are a small percentage of the market.


I am not sure it is true.
Sure, overall market share is still small, but growing. And this goes for both Mac and all the different flavors of Linux. Lots of corporations use PCs, which also bumps up the perceivable market share.

Certain demographics are heavily weighted towards the Mac or Linux, though, so it all depends on who your target market is. Would be a nice poll to see what percentage of Go players use what system.

Take me for example. I was a Windows-only user, and then about a year ago I found myself forced to switch to Linux. Now I finally decided to save myself the pain and dish out for a Mac. I think this might be a common story in the world of blue-collar computer workers.

So again - over all stats are cool, but to be on the safe side, go with something cross-platform.
This is my advice.

_________________
- Bantari
______________________________________________
WARNING: This post might contain Opinions!!

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #14 Posted: Sun Sep 12, 2010 1:49 pm 
Oza

Posts: 3655
Liked others: 20
Was liked: 4630
Thanks guys. There was quite a bit that was brand new to me but I've just been reading online and referring back to my doorstep books. I see that there are (for me) horrifying issues with various of the solutions, such as incompatibilities with Java Unicode (which is important to me), and the need for wrappers, plus learning SQL is an overhead I don't need. I'm never likely to use another database so time spent on SQL would be a one-off waste, on top of all the other scary problems.

If I get round to it, I think I'll just write something in Java that may not be a proper database but will at least provide the information in a way suitable for people who have never used database query languages. I already know how to do that, and I might enjoy trying to add a bit of the fancier stuff using regular expressions. It keeps me out of mischief.

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #15 Posted: Sun Sep 12, 2010 2:18 pm 
Lives in gote

Posts: 350
Location: London UK
Liked others: 19
Was liked: 19
Rank: EGF 12kyu
DGS: willemien
Hi John

I once had a look into it (and gave up sometime later)

and as far as i could follow it (Java6) has a database build in.

or it was something that some database could be included in your program

see:

Jdbc http://java.sun.com/products/jdbc/overview.html

apache derby embedded http://db.apache.org/derby/

But don't ask me technical questions about it, this is as far as i did get.


Good luck and i hope that you get furter with it than i did :bow:

_________________
Promotor and Librarian of Sensei's Library


Last edited by willemien on Sun Sep 12, 2010 3:23 pm, edited 1 time in total.
Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #16 Posted: Sun Sep 12, 2010 2:27 pm 
Lives in gote
User avatar

Posts: 429
Location: Sweden
Liked others: 101
Was liked: 73
Rank: SDK
KGS: CarlJung
I may have to hand in my developer license for this but I think Access has it's place, especially with this kind of application. I vaguely recall reading something about distributing Access "applications" that don't require the user to have Access installed. That said, with Access you are only catering to the Windows users. I strongly suspect that in your target audience, Mac and Linux users come in large numbers.

Hmm.. are there some java based Access alternative? I'm not talking about only the storage here, but the whole package where you can actually make some nice GUIs in a designer view without coding anything.

_________________
FusekiLibrary, an opening library.
SGF converter tools: Wbaduk NGF to SGF | 440 go problems | Fuseki made easy | Tesuji made easy | Elementary training & Dan level testing | Dan Tutor Shortcut To Dan

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #17 Posted: Sun Sep 12, 2010 2:54 pm 
Lives with ko

Posts: 255
Location: Miyazaki, Japan
Liked others: 351
Was liked: 66
I agree with those who recommend not using Access. If you were to use a non-free program I'd recommend Filemaker, which is cross-platform & can create standalone apps. However, I do think SQLite or per your last post something in Java would be the way to go.

I am very glad to hear you're thinking about this because your names database is one of the few things that currently doesn't work well for Mac users.

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #18 Posted: Sun Sep 12, 2010 2:56 pm 
Gosei
User avatar

Posts: 1848
Location: Bellevue, WA
Liked others: 90
Was liked: 837
Rank: AGA 5d
KGS: Capsule 4d
Tygem: 치킨까스 5d
Choose wisely.

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #19 Posted: Thu Sep 23, 2010 10:43 am 
Beginner
User avatar

Posts: 11
Location: Germany
Liked others: 4
Was liked: 0
Rank: 2k
KGS: murksomat
John Fairbairn wrote:
... is possible to produce this in such a way that makes it possible for the end user to run the database without himself having bought Access or whatever

Sorry, I am new to this forum and didn't read all answers very carefully. It seems that nobody answered your question.

Is that what you are looking for?

Top
 Profile  
 
Offline
 Post subject: Re: Database engines
Post #20 Posted: Thu Sep 23, 2010 12:53 pm 
Dies in gote

Posts: 52
Location: Chevy Chase, MD
Liked others: 0
Was liked: 8
Rank: AGA 7K
KGS: gurujeet
DGS: gfromdc
John Fairbairn wrote:
What I can't work out from an initial survey in books is whether it is possible to produce this in such a way that makes it possible for the end user to run the database without himself having bought Access or whatever (i.e. the application saves with the data some sort of truncated engine that means he can run only that database and not create new databases).


You can distribute an Access application to non-Access users by distributing it with the Access runtime which is a free download.

Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 22 posts ]  Go to page 1, 2  Next

All times are UTC - 8 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group