I need explanation about data dictionary

Sep 15, 2016 at 10:57pm
I have some problems regarding understanding data dictionary offline/online, I mean a bilingual dictionary English/another language, a searchable dictionary containing approximately (70 000) words each language. Tell me if I am right or not.

1- There are two possibility for the database offline/online. If I make it online, I can use MSSQL, MYSQL, ORACLE etc… to create the database.
2- If I make offline, I can use a text file.txt, MSACCESS, MSEXCEL, SQLite etc…
3- If I make it online, there is the possibility for accessing the whole database by the users.

What are the best approaches to create a bilingual dictionary 70 000 - 80 000words each?
Sep 15, 2016 at 11:42pm
I have never seen the words online and offline applied to a database. What you appear to be contrasting seems to be a DBMS like SQL Server, MySQL, etc., and an embedded database like SQLite.

If I make it [a DBMS], there is the possibility for accessing the whole database by the users.
What do you mean? Are you listing this as an advantage or as a potential vulnerability?

If we're talking just about the simplest of bilingual dictionaries, where you query a word and get back a list of words, the most efficient method is to keep the entire dictionary in memory as a std::multimap<std::wstring, std::wstring> and to initialize it from a text file at startup. Forget about databases; there's little enough data to keep everything in memory.
Sep 16, 2016 at 5:55am
closed account (48T7M4Gy)
https://en.wikipedia.org/wiki/Online_database

http://stackoverflow.com/questions/16815942/how-to-make-a-local-offline-database

Just about any reasonable DBMS will cope with the online/offline configuration. FileMaker Pro is another one which is OK. Open Office/Libre has a DBMS too.

A spreadsheet is so far down-market it doesn't deserve comment beyond that.

Program your own adopting the STL <map> idea and text file. multimap is a bit obscure to me but maps are definitely the way to go and the application wouldn't be too hard. Networking the data via a HTML interface for end users is not all that difficult. You'll need to consider where/who owns/pays for the data server.
Sep 17, 2016 at 8:57am
Thanks helios and kemort for your answers.

 
What do you mean? Are you listing this as an advantage or as a potential vulnerability?

helios I meant as a potential vulnerability. But yes, I got that, no fear. The database will compile inside the program.

So, what are some other databases that can be embedded to the program, no need for server( Internet connection to access) except SQLite?

And which is the best for a data dictionary as I mentioned before?
Sep 17, 2016 at 6:39pm
helios I meant as a potential vulnerability.
Well, all DBMSs include access management. For example, you can give a specific account read-only access. But if you don't want your users accessing the database, simple don't have the database listening for connections from the outside. Configure the database so it will only accept local connections from the program and let the program listen for and respond to requests.

Like I said, the best approach IMO is not to use a database at all, but to use an in-memory data structure to respond to queries.
If you definitely want a database, take a look at BerkeleyDB. It's an embedded key-value store for arbitrary data; by default it uses a B-tree and memcmp() to sort keys; it can store multiple values per key. MySQL uses or used it as its backend storage system (i.e. it implements its queries on top of BerkeleyDB). Note that you need to create an account at Oracle to download the sources.
Sep 17, 2016 at 8:52pm
Thanks helios for yr clarification. cool
Sep 18, 2016 at 2:34am
closed account (48T7M4Gy)
There's not much more to say in support of maps as a good/easy choice of approach so I won't beyond this analogous 2 <map>'s exercise which cropped up a while ago http://www.cplusplus.com/forum/beginner/192939/2/#msg930525

Microsoft Jet Database engine still seems to be around so that's worth adding to the list.

( One thing to keep in mind with all this SQL type stuff is the query for a language dictionary is likely to be not much more than a one-liner requiring a relatively huge overhead. )
Last edited on Sep 18, 2016 at 2:34am
Sep 18, 2016 at 1:46pm
well-done kemort. Appreciate yr answer.
Topic archived. No new replies allowed.