Moving a Berkley Db from XP to Ubuntu - berkeley-db

I have a bdb database which I have been using on my XP box. I am now migrating most of my apps etc to Linux (Ubuntu 9.10 to be precise).
I am not sure that simply moving the db files will work. Has anyone undergone this process of moving a BDB database from the windows platform to Linux before, and if so what is the procedure?.
Also, during the "migration" is there anything in particular that I need to be aware of (i.e. "gotchas")?

Short answer, yes, you can migrate the db files between machines/os. The files that bdb creates are cross platform, they only need to be read by bdb which makes this easy.
The OTN Bdb forum is a really good place to ask bdb questions.

Related

Using MonoCross, where should the creation of SQLite databases live?

Due to the differences in file structure etc. between platforms, I was wondering if the database creation (with connection strings) need to be platform specific? Or if there's maybe a way to create a database from OnAppLoad() platform agnostic?
The SQLite file format is fully portable.
A database in SQLite is a single disk file. Furthermore, the file
format is cross-platform. A database that is created on one machine
can be copied and used on a different machine with a different
architecture. SQLite databases are portable across 32-bit and 64-bit
machines and between big-endian and little-endian architectures.
You do not need to worry about it at all. Things to worry about that are not platform related are few and can include the WAL journal-mode due to lack of backward compatibility.
You can also read:
http://www.sqlite.org/atomiccommit.html#sect_9_0
and:
http://www.sqlite.org/lockingv3.html#how_to_corrupt

Berkeley Db platform migration

I have a large (several Gb) berkeley db that I am thinking of migrating from windows (2K) to Linux (either Redhat or Ubuntu). I am not sure how to go about this. Can I merely move the db files accross, or do I need a special conversion utility?
Database and log files are portable across different endian systems. Berkeley DB will recognize the kind of system it is on and swap bytes accordingly for data structures it manages that make up the database itself. Berkeley DB's region files, which are memory mapped, are not portable. That's not such a big deal because they region files hold the cache and locks which, because your application will not be running during the transition, will be re-created on the new system.
But, be careful, Berkeley DB doesn't know anything about the byte-order or types in your data (in your keys and values, stored at "DBTs"). Your application code is responsible for knowing what kind of system it is running on, how it stored the data (big or little endian) and how to transition it (or simple re-order on access). Also, pay close attention to your btree comparison function. That too may be different depending on your system's architecture.
Database and log files are also portable across operating systems with the same caveat as with byte-ordering -- the application's data is the application's responsibility.
You might consider reviewing the following:
Selecting a Byte Order
DB->set_lorder()
Berkeley DB's Getting Started Guide for Transactional Applications
Berkeley DB's Reference Guide
Voice-over presentation about Berkeley DB/DS (Data Store)
Voice-over presentation about Berkeley DB/CDS (Concurrent Data Store)
Berkeley DB's Documentation
Disclosure: I work for Oracle as a product manager for Berkeley DB products. :)
There's a cross-platform file transfer utility described here.
You may also need to be concerned about the byte order on your machine, but that's discussed a little here.
If you're using Java Berkeley though it shouldn't matter?

How can we use version control in a shared work environment?

Currently our team (web devs, one designer and one copywriter) all work on separate workstations but do our changes on the same dev environment (we all mount the same shared drive), it's a marketing site and not a web application, so no builds or deployments, we just push changes to the live site once they are done, but I think it's important for us to keep versions of files, especially serverside code, even if it only makes up a tiny percentage of our content (mostly static pages).
I'd like to use version control for our work setup, but I'm not sure if SVN or GIT will play along with more than one person checking in/out from the same dev environment. I've got existing experience with SVN, CVS, GIT, Perforce and PVCS but have always worked with individual dev environments.
I'd like a solution that doesn't require us to run separate dev environments as we lack the infrastructure.
Most, if not all, version control implementations are intended to be used by more than one person. Both Subversion and GIT will happily do everything you require but you might find Subversion easier to get up and running with quickly. If you intend to host it in a Windows environment, take a look at VisualSvn Server.
The major difference between GIT and SVN is that GIT is a distributed system whereas SVN relies on a central repository. In software development, there are good arguments for using a distributed system but the needs you describe would be easily served by the much simpler SVN implementation (I think).
Another good reason for using SVN (under Windows) is that the TortoiseSvn client is one of the best examples of a user interface to any version control system. It is extremely easy to learn how to use and well documented as well as supported by the OS community.
It may also be worth investigating the various providers of hosted version control systems if you don't want the overhead of maintaining your own source control servers.
You don't need lots of server hardware. Why can't each dev/designer/etc run the site on their own computer? You do have atleast one computer each? :)
GIT or SVN in that case is just a matter of taste.
the way we used to do this at an old workplace was to give each user an account, and give the "project" and account as well. We would each check out a local working copy. the project (in your case it would be the tools that people in your business use i guess) would check out a copy too. Once the devs were all satisfied with a certain build, we would issue an update to the project working copy.
In your setup you say that you all have the same dev environment. do you mean you each have your own PC on the network, or are you sharing a PC? either way you should be able to each have your own svn accounts and local working directoires, so this would not be a problem.
Depending upon the amount of data you are talking about, an option to consider would be Dropbox ("secure backup, sync, and file sharing made easy"). It supports versioning, and lets you share folders.
It also has the benefit of providing offsite backup of, and remote web access to, your data.
With svn, you can have each submit automatically trigger an update of the live site. Still having everyone work in the same directory is somewhat awkward (as it was all the time, anyway …), but old habits die hard and assuming people insist on that, svn does export its repository via WebDAV, so it should be possible to mount it as a network filesystem on the desktop machines.
"Currently our team (web devs, one designer and one copywriter) all work on separate workstations but do our changes on the same dev environment (we all mount the same shared drive)" Adding SVN would do away with the need for the shared drive. You would each work in a local directory that is checked in to SVN. Tortoise would be a perfect client for you.
"it's a marketing site and not a web application, so no builds or deployments, we just push changes to the live site once they are done" A simple batch job (ANT script or other) could be written and given to each of you. Once the files are ready for deployment simply execute the batch and have it check out the latest files from SVN and copy to your web server.
"doesn't require us to run separate dev environments as we lack the infrastructure"
Doesn't make a lot of sense.
Presumably, each of you has a separate workstation. And your workstations are separate from your web server. Just guessing, but that's typical.
You can -- trivially -- each have a private development copy on your workstations. You can then use SVN to synchronize your various changes.
You can tag a version as "good to go".
Someone can -- when you've got everything looking right -- do an update on the web server to get the official version into production.
This doesn't require any more infrastructure than you already have in place.
With SVN you can have the devs commiting to the server, and have one special user at the server checking out the latest version. So commiting you work involves commiting to SVN, then logging in to the server and do a checkout of the latest trunk.
You can use the same pattern with git and other decentralized version control systems. The advantage with these systems is that they don't enforce the central server pattern. Dev a could for instance push to b which then pushes it to the server.

What do you think of Postgres and Firebird Databases? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am trying to choose between postgre and firebird databasses. The database will be installed on a windows 2003 server with asp.net 3.5. i don't want to use sql server because of price issues and I don't want MySQL I had a bad experience with it and the .net connector and the membership provider.
I've always been impressed with Postgres; it's traditionally had a more complete feature set (in terms of ACID compliance, support for advanced queries, etc.) than MySQL, it has solid Windows ODBC drivers, and its documentation scrupulously points out any areas in which it deviates from the SQL standard. (All databases, it seems, deviate in one respect or another, but Postgres is the only one I've seen that makes sure you know when you're doing so.) I haven't tried the usage scenario you describe, but I've had no problems running it on Linux and accessing it from both Windows ODBC and Linux clients.
I don't have any experience with Firebird; sorry.
I'm using firebird database since 1.0
I'm very happy with it
I'm using on windows and linux
Some time ago, I used to work with odbc. No problems and very easy
Easy instalation, very small maintenance, rocks
Dividing db in several files is an option, but I don't recomend you to do it
After server crashes (electric problem or full harddisk) the system continues working inmediatly without any maintenance
I have versión 2.1 on testing and 1.5 on production
I'm using flamerobin to manage both versions
Hellen's book is great to learn about firebird
I also tested and read about postgresql.
It looks a great db server
Since long time, they are using multigenerational records (as firebird before interbase before groton databases did since the begining)
On postgresql, now you need to vacued records (on firebird it is called sweep)
Someone told you it wasn't necesary on postgresql, but I don't thing so
postgresql has a better language. You can write your own funcions with this language (on firebird you have to write new functions on c, c++, etc...)
postgresql has more data types. In fact you have several of them.
You also have full search.
On postgresql you also have regular expresions (I think in where, and therefore with sustitution options). This funcionality will be ready on firebird very soon
In any case, I'm very happy with firebird and it evolucion.
Postgresql and firebird are improving and diferences bettwen them are smaller
Many of the comments comparing firebird and postgresql are copied from...
http://www.firebirdsql.org/dotnetfirebird/blog/2005/03/firebird-advantages-over-postgresql.html
this is an old comparation. I don't think postgresql driver on .net is not mature now
With firebird you cannot connect from one database to another (it will be possible in a short future)
Firebird is smaller and easer than postgresql, but it's also very good in performance, stability and low mantenaince
bye
I've been using Firebird for several years. Its been rock solid and I'm very happy with it. Excellent comprehensive documentation is available via Borrie's "The Firebird Book" & its updates. Awesome administration capabilities are available using IBexpert.
I've been working with PostgreSQL, Firebird, Oracle, MySQL, MSSQL more than 6 years ago and my preferred are Firebird and PostgreSQL. I don't like MySQL because Commercial License is not cheap, and MySQL lacks of some functions.
I you ask me about what is my preferred one between FB and Pg.... It varies about requirements and needs. I feel that Firebird works better when speed is a must. I've been working with very large databases environments and I have not had problems. PostgreSQL is better in web sites and internet applications developed in PHP, Python and Ruby, but I think that this will not be for much time. In the last months big companies are looking to FB as a very serious DB. I recommend you FB. Try it, give it a chance, you won't be disappointed.
We use Firebird since its birth. Actually we love this database :)
I love using Postgres - it's powerful, fast, reliable and extremely well documented. The PL/PgSQL language is about as powerful as you could conceivably require, and I can't think of a single serious problem I've ever encountered with it. Most problems tend to be user-created ones, and are resolved after digging through the documentation.
Provided you know a bit about "grown up" databases (i.e. not something like MS Access), or are prepared to learn, I'd wholeheartedly recommend Postgres.
Can't comment on Firebird because I haven't used it
Firebird + FreeadhocUDFs + IBExpert, and just programming.
we have 2 systems in production for 6 years
(20 domains, 200 tables, 50 views, 370 stored procedures, 600 triggers,
205 generators, 11, roles, etc, etc) and have been tested to migrate to PostgreSQL (only
test, we love Firebird).
In tables with traditional data types (integer, varchar, date, numeric, etc, etc.)
differences could be for one or the other, as appropriate,
but in stored procedures, Firebird is much more powerful than Postgresql,
much more simple and elegant.
Two or three years, any Linux distribution, not including Firebird, only Mysql and Postgresl.
Not for nothing today, but tradicionesles distributions (ubunutu / opensuse / fedora / centos, etc, etc) and
Firebird include in their repositories.
Postgresql do not say that is worse than Firebird, Firebird is not that much better than Postgresql.
But without hesitation I say that Firebird has nothing to envy to Postgresql, and in many ways is more powerful.
(sorry for my bad english)
They are both cool. However, one BIG advantage for Firebird is it's .net data provider. Good mature solution, vs buggy npgsql (or some paid Postgres drivers). So it it mostly to chose what db you are more familiar with or what are your developement team skills.
Both Postgres and Firebird are excellent databases.
I've been using Firebird for 8 years and it is really strong.
Check this link http://www.ib-aid.com/articles/item104 and see that Firebird is a pretty good database.
Postgres's .NET driver is not mature enougth, while firebird .net provider is even supporting entity framework!!
Firebird is wonderfull, solid, easy to maintain, install & small footprint (embedded version as well)
The only drawback: you have to do a backup and restore to eliminate deleted records physically.
So for a system that has to be 24/7/365 it is a huge limitation.it is not my case so no problemo.
PostgreSQL does not have that problem (but I have never used it).
A friend runs an entire shipping company with millions of transactions on PostgreSQL with linux servers & java and he is very happy.But the maintenance is more heavy than firebird.
Besides if you use delphi, Firebird is better suited.
I always worked with Firebird since 2005 writing application in Delphi, C# and ASP.NET. I never had a corrupt database in my projects. I never needed to work with another database.
Why Firebird instead of PostgreSQL?
Because Firebird is:
Easy to Install and Configure;
Very stable;
Lightweight (Firebird 2.5 Download:
6,4MB / Postgresql 9.0 Download:
47MB);
OpenSource;
Easy deployment (PSQL);
Crossplatform (Win32 / Win64 / Linux
x86 / Linux AMD64 / MacOS X / Solaris
/ HP-UNIX);
No need for DBAs;
Embedded engine;
Well. If you are using Firebird you dont need another Database. :)
We are using Firebird since 1.0v. It is stable, robust, many features out of the box and extremelly easy to install and mantain.
We develop using .Net and Delphi.
If you choosse FB, fell free to contact us if you need some tips.
Paulo Junqueira.
http://www.rt1.com.br
Most of the features are the same on both however I recommend Firebird
1. FB - supports multiple collation within a table
2. FB - more choices on mature drivers to work with
3. FB - connection managed by either Thread or Process depend on your use/setup
4. FB - embedded support
Not recommend
Stay away MS SQLExpress
A little Draw back
1. FB - blob handling is not so great if condition below are true
but if you move blob column(s) into separated table, then no issue with blob
a. massive data mining/manipulating
b. blob column(s) is/are defined with other data columns
Firebird Rocks man, see this link Firebird Advantages over PostgreSQL
Mature Windows support. Firebird is supported on Windows for a very long time and it's well tested. PostgreSQL supports Windows natively since 8.0. Still only a few months...
Mature ADO.NET provider. Npqsql (PostgreSQL ADO.NET provider) is still in beta. Firebird ADO.NET provider supports the embedded Firebird, services API (backup, restore, statistics, batch SQL execution...).
Embedded version. Embedded version (with 2 MB runtime and easy switching to a standalone server) seems to be one of the biggest advantages of Firebird.
Licensing. LGPL (Npgsql is covered by LGPL) seems to be less commercial-friendly than IPL (at least it is a much less clear language).
The Firebird open source database server wins a SourceForge Community Choice Award (in the "Best Project for Enterprise" category).
Bye.
Feature no 1 : Firebird required 0 Administration and is simpler to use than Postgresql
(think of sqlite like easy of use with oracle/postgresql like features)
2.Firebird does have Embedded mode and is fully multi threaded in 2.5
3.And yes Firebird is fully multithreaded where Postgresql is NOT
so we are ahead in this area with at least 2 or more years
"All backends running as threads in a single process (not wanted)
This eliminates the process protection we get from the current setup. Thread creation is usually the same overhead as process creation on modern systems, so it seems unwise to use a pure threaded model, and MySQL and DB2 have demonstrated that threads introduce as many issues as they solve. Threading specific operations such as I/O, seq scans, and connection management has been discussed and will probably be implemented to enable specific performance features. Moving to a threaded engine would also require halting all other work on PostgreSQL for one to two years."
I will update the post later with more features and links why does
http://mapopa.blogspot.com/2010/10/where-firebird-is-better-than.html
As others have pointed out, PostgreSQL is very good in terms of features, speed and reliability. However, after having developed an enterprise .Net application in it, I have to say that it does not mesh with Visual Studio as easily as SQL Server. Aside from that, SQL Server vs PostgreSQL is a little like the Windows GUI vs the Linux shell: one is easy to use, but the other is much faster and more powerful, ONCE you get used to it.
Apparently you can't use LINQ via the ODBC driver, and if you're developing a system using sometimes connected mobile devices, you lose the option of automatic synchronization that you would otherwise have with SQL Server and SQL Server Compact.
One branch of Firebird is an Oracle clone called Fyracle which is even able to run Compiere. On this page you can find reasons why authors chose Firebird over PostgreSQL, which might also help you with your decision. How successful this Oracle emulation is can be seen from this quote:
Firebird-Fyracle supports the major
Oracle-based ERP/CRM application
"Compiere" -- with virtually no change
to the Compiere code base. Fyracle has
supported Compiere since version
2.4.2b, which contained over 20,000 lines of PL/SQL. The current release,
2.5.3c, has moved most PL/SQL into stored procedures written in Java,
which is also supported by
Firebird-Fyracle.
Why don't you try SQL Express a scaled down version of SQL from Microsoft which is free to use.

Encrypt on iSeries

What tools are available to encrypt or password-protect a file stored on the IFS?
*integrated file-system, accessible from Windows
You could setup object security so only certain users can view the file.
There are encryption tools available for purchase. There is also some built-in APIs for encrypting.
Here are some resources to look into:
Scenario: Key Management and File Encryption Using the Cryptographic Services APIs
The Next Step in Security
A Simple Encryption/Decryption Algorithm for Numbers
Cryptographic Services APIs
Most of these articles deal with encrypting data in a table, but the concepts should help you encrypt a file on the IFS.
Or you could simply encrypt the file from a Windows box with ccrypt or TrueCrypt (perhaps not what you are looking for). Both are free. As is GnuPG which has a windows port and is probably the best of the bunch.
Don't forget that iSeries with PASE can run many AIX programs as is.
ccrypt for AIX could almost definitely be made to run on the iSeries and be called from QSH. And similarly for GnuPG for AIX; it could be run on the iSeries itself.
There is PkZIP for the iSeries which can provide encryption.
You could also 'roll your own' encryption using Java Cryptography.
We are currently using Arpeggio, which is free. We used to use PKZip, but were able to replace that tool with the free Arpeggio software. Seems to work well
You can set the authority to the file so only users in one group have access to it. I think its option 9 I don't have access to a iseries at this moment.
You can pull a port of GnuPG from Scott Klement's website at : https://www.scottklement.com/gnupg/. We have been using it without issue for years.
A lot has changed since this question was asked! IBM i now has extensive support for open source software in PASE. Several of the other answers here mention packages that IBM now provides for no cost as RPMs, easily installable via yum (or the Access Client Solutions GUI, which includes a graphical front-end for yum). Here is just a sampling of IBM-packaged tools you could use for encryption of IFS files:
GnuPG
p7zip (POSIX version of 7-Zip, compatible with and mostly superior to PKZIP)
Python, Node.js, and other programming languages, with access to various encryption libraries
Note that the RPM-based packaging is only supported on IBM i 7.2 and above. (Some people have been able to get it working on 7.1, but this requires the right combination of PTFs and know-how.)
For those on older (and by now, far out of support) versions of IBM i and its predecessors, you may be able to use Scott Klement's ports of GnuPG and p7zip, or Per Gummedal's iSeriesPython.

Resources