Unsplit mdb on a shared network drive?

D

David Portwood

Split, split split! I split my .MDB and ran into huge performance problems.
When unsplit and running from the same shared network drive the performance
improves immensely.

So exactly why can't I just copy my unsplit app to a shared network drive
and let the users run it from there? Assuming approximately 10 users or less
simultaneously. A2000.
 
G

Guest

It's your own call to split or not. But remember if you have to do
maintenance on the DB it will be hard to tell everybody not to touch the DB
if you are working on it. Furthermore everyone has direct access to your
tables and that is a potential danger (delete etc...). There ar a ton more
reasons to split but you've heard them already. So to be short it's up to
you. If it's performance that's wrecking the DB try tuning it a little extra
(maybe a tmp-table or two on the Frontend would just help you out here).
Static tables can be local tables in a frontend, updating can be done on
request...

Maurice
 
D

David Portwood

It's your own call to split or not. But remember if you have to do
maintenance on the DB it will be hard to tell everybody not to touch the
DB
if you are working on it.

The users will be in our department. If I come in an hour or two early I can
remove the .mdb from the shared folder and I will enjoy exclusive access
until I return it. It won't be down long in any case. I will quickly copy
over any updated objects and restore the .mdb for shared use. That's my
current plan, anyway.
Furthermore everyone has direct access to your
tables and that is a potential danger (delete etc...).

I do have malicious users (I'm thinking of one goofball in particular) but
the database will be secured.
There ar a ton more
reasons to split but you've heard them already.

All I actually *know* at this point is that splitting kills performance. I'm
willing to believe - as I've been told by everyone - that if I optimize my
split db to a gnat's a**s I should be able to improve performance to
something acceptable. But maybe that will have to wait until I have more
experience and all the time in the world to play with it.
 
A

Albert D. Kallal

David Portwood said:
Split, split split! I split my .MDB and ran into huge performance
problems. When unsplit and running from the same shared network drive the
performance improves immensely.

So exactly why can't I just copy my unsplit app to a shared network drive
and let the users run it from there? Assuming approximately 10 users or
less simultaneously. A2000.

Well, you can run unsplit, but then you have to explain to me why virtually
every other piece of software on your system for the last 20 years was
placed on each machine?

If one person has a problem with word, and everyone else in the building has
to stop using word, then what kind of relbiiery you going to get? The same
goes for ms-access, and if you look bad, then perahps you loose your job for
incompetence, and then hire some oracle dba's that know what they are
doing!!!

While the incompetence reference above is a bit toung in cheek, it is
reaction you get.

However, I explain in more detail WHY you split..and WHY you should not!!.
(I don't just tell you).

If you ever used a computer, and ever used software, then you quickly need
to learn and realize the difference between code (software) and data. If you
can't grasp that difference, then one has to ask what else you can't grasp?
You need to start thinking in terms of software development here.

Anyway, here is the article, and I explain *why* you split...and what
happens when you don't...

http://www.members.shaw.ca/AlbertKallal/Articles/split/index.htm


Your problem is that you developed a application in single mode user, with
single user in mind. You now introduced a network, and possibility of
splitting. You are now deploying software to each workstation. So, now you
have a complete diffent goal and design model. You now have 1000's of little
things in your database that you developed over time, but NEVER tested on
the network, and NEVER tested in a split environment.

in fact, if you don't split, then how did you plan to fix bugs,a nd work on
the system? You mean everyone goes home for the day while you make changes,
and fix bugs? (well, if you never developed software, then you never ask
this question!!!). You can't make changes to the forms and code while users
are working in the application if you don't spit. Can you imagine if you
could not use the next version of excel while Microsoft works on the current
one? Think for a second here!!!


You may very well be stuck in a situation where you don't split, but the end
result will a un-reliable setup, and frustrated users. You needed to develop
in a split environment so when you do something that too slow, you
immediately realized it, and fixed it.

You can certainly risk running multiple users in the same front end (but,
you don't do that with word, excel, or anything else -- read my article to
understand this). If your application is not reliable, then your users will
begin to loose trust and faith in the of application.

So, just keep in mind that any competent software developer is going to make
a distinction between the application code you write and deploy, and that of
sharing data. I not going to point out that someone who can't make this
distinction is incompetent and has no business writing software, but it is
the reaction you get.

Even if you decide to not split, take the time to understand the difference
between an application, and data. The rest is up to you, but how do you plan
to deploy updates, and bugs fixes to your software?
 
D

David W. Fenton

It's your own call to split or not.

It is up to the developer to decide if he's going to be bloody
stupid, or just exhibit basic common sense, so, yes, I guess I'd
agree that it is the developer's call as to whether to split or not.

But anybody who doesn't split is being very, very, very dumb.
 
D

David W. Fenton

All I actually *know* at this point is that splitting kills
performance.

No, it does no such thing.

It's only in a badly-designed application that splitting "kills
performance."

The problem here is not Access -- it's *you*.
 
D

David Portwood

Mr. Fenton, I think you are insulting me in order to advertize yourself. By
calling me "bloody stupid" you imply that you are, by contrast, highly
intelligent and skilled. I find this kind of thing to be a common practice
in the working world. You will probably argue that you are just defending
Access and perhaps this is true but I doubt your motivation is that noble.

Certainly, in this newsgroup, I should probably not say or imply anything
against Access and I apologize for doing so. I would hope that any lurkers
would realize that my remarks stem from what are probably fairly common
newbie frustrations.

In any event, let's not have any further interaction.
 
J

Joseph Meehan

David said:
The users will be in our department. If I come in an hour or two
early I can remove the .mdb from the shared folder and I will enjoy
exclusive access until I return it. It won't be down long in any
case. I will quickly copy over any updated objects and restore the
.mdb for shared use. That's my current plan, anyway.


I do have malicious users (I'm thinking of one goofball in
particular) but the database will be secured.


All I actually *know* at this point is that splitting kills
performance.

I suspect what you know is that YOUR split database has performance
problems. Do consider that it may be due to a design problem. I and most
others here have worked with both split and non-split databases and for
multi user environments we all chose to split in part because they perform
better in our experience.

Maybe we (you and us) should look into finding why you are having
performance issues. Be design a split system should perform better or as
good.
 
D

David Portwood

Your problem is that you developed a application in single mode user, with
single user in mind.

Actually I always planned for my app to run in a multi-user environment.
in fact, if you don't split, then how did you plan to fix bugs,a nd work
on the system? You mean everyone goes home for the day while you make
changes, and fix bugs? (well, if you never developed software, then you
never ask this question!!!). You can't make changes to the forms and code
while users are working in the application if you don't spit.

Can't I work on a copy of the database while others are using the production
model? If I change a form in the copy, I'll copy the changed form to the
production model - yes - after everyone has gone home. Or perhaps before
they've come in. So, when you say, "You can't make changes to the forms and
code while users are working in the application if you don't split" - is
that really a true statement?
Can you imagine if you could not use the next version of excel while
Microsoft works on the current one? Think for a second here!!!

I "think" my situation is not the same.
You may very well be stuck in a situation where you don't split, but the
end result will a un-reliable setup, and frustrated users. You needed to
develop in a split environment so when you do something that too slow, you
immediately realized it, and fixed it.

Ok, this is valuable to me. I didn't know I could develop in a split
environment. I thought I had to complete the app and then split it.
You can certainly risk running multiple users in the same front end (but,
you don't do that with word, excel, or anything else -- read my article to
understand this). If your application is not reliable, then your users
will begin to loose trust and faith in the of application.
Obviously.

So, just keep in mind that any competent software developer is going to
make a distinction between the application code you write and deploy, and
that of sharing data. I not going to point out that someone who can't make
this distinction is incompetent and has no business writing software, but
it is the reaction you get.

It is the reaction of someone who is advertizing himself at someone else's
expense.
Even if you decide to not split, take the time to understand the
difference between an application, and data. The rest is up to you, but
how do you plan to deploy updates, and bugs fixes to your software?

I think I've explained this. If you see that my plan is unworkable I'd
appreciate hearing why - without the insults.
 
A

Albert D. Kallal

Can't I work on a copy of the database while others are using the
production model? If I change a form in the copy, I'll copy the changed
form to the production model - yes - after everyone has gone home. Or
perhaps before they've come in. So, when you say, "You can't make changes
to the forms and code while users are working in the application if you
don't split" - is that really a true statement?

Well, lets not get into splitting hairs on a level of semantics here.

it is essentially correct. However, when you split, you also are working on
a copy.

The problem is not so such working a copy, but keeping track of the changes
and fixes you make. I mean, if you spend a whole day making changes, and
additions to your application, you could have changed 12 forms, the layout
of 5 reports..and code in a dozen different places. and, we not even talking
about sql quires you modified. While you *can* keep track of this, it
certainly a bit tedious and VERY easy to miss something you changed.

That tracking is a waste of time and effort that you could be using to
further your application ahead. Also, if you forget one thing to copy in the
middle of code routine, then your likely to spend the day tracking down a
bug.

You going to need all the effort, talent, and focus that talent on creating
a really good product. Splitting simply allows you to do that. You spend a
whole day developing new features for that application, and you now going to
have to somehow remember all of the changes you made? (as I said, it is
possible..but it also very easy to miss one thing you changed. further,
importing forms means you have to delete existing ones, and it rather easy
to mess up that process. And, when you have to copy code, it not only easy
to miss something, but can introduce bugs...

Ok, this is valuable to me. I didn't know I could develop in a split
environment. I thought I had to complete the app and then split it.

Hum, this is unfortunate. You not only want to develop in a split
environment for reasons of performance (or seeing bad performance, but you
also want to learn about re-linking tables in your start-up code etc. You
eventually will have to build in your own linking code. (but, for now, the
linked table manager will become a common tool you use).

I used to test on a 10baseT network, and deploy to a 100baseT network. I did
this, as you want to work in a system that is sensitive to performance
issues. If your system BARELY works good when it is on a single user
machine, and un-split, and then you deploy to a network, that is too late.
it means you might be using 99% of the network ability, and then when you
add two users...you in big trouble performance wise.

We don't split at the start of development (as my article states).

So, it not only you want to split, but you frequently want to test and
develop in that split environment so you have a feel for how the application
will run in that environment.
I think I've explained this. If you see that my plan is unworkable I'd
appreciate hearing why - without the insults.

My apologies here. I did state that I being a bit of a advocate. I just
trying to developers out that other developers viewing this would have a
negative reaction here. I meant in no way to make this personable to you.
Please accept my sincerely apology if this came off the wrong way. However,
I think that your "sense" of my reaction is exactly what I wanted to convey
to you. however, I look for NO license here to be rude, or disrespect. It is
not my intention.

Anyway, back to how to update?

Sure, copying forms, code etc is a possible solution. If you spend the time
tracking, or writing down (or whatever) each fix and change, and thus build
up a list of things that you must change (import) to the production mdb,
then it is a possible solution. I do think this introduces a point of making
mistakes, and forget things.

However, how much of a future battle do you want to prepare for? How great
of product do you want to make here? These tips and hits are not things that
you *must* do, they are simply things that make the developer process go
better.

So, like a good pool player, it not they are a super shot with the pool cue,
but they learn to *avoid* the difficult shots. (that is the real secret to a
good pool player, or software developer).

so, splitting not only follows how most software is deployed, but it gives
many other advantages also.

The problem really you faced with is that you did not spend a significant
amount of time developing as split, and on a network. Hind sight is so
rather easy ad pathetic on my side here. (I mean, rally...so what...we
learning things here!!). So, what!!, we are dealing with after the fact, and
I not trying to flame you, or but heads with you.

The other big feature of splitting is that you can deploy a mde in place of
a mde. that mde has the source code removed (no tampering from your users -
forms and code design is locked), the mde is also smaller, and does run a
bit faster because debug code and source code is removed.

So, what would I do now?

Well, I would try working your way though Tony's list if things to check,
and see if any helps.

if none of Tony's list helps, then you now kind of stuck between a rock and
hard place. Since you have something that seems to be limited in
performance. You either run un-split, or see if improvements can be made in
performance.

I should note that we often see weekly posts in the sql server newsgroup
when a person takes the mdb back end, and moves the data to sql server, and
expects performance to increase, and in most cases...it does not. Ms-access
makes a great front end to sql server, but the migration and lessons learned
is similar to your case (you want to have a good portion of the development
and testing process to be simular to that of your production environment).


Good luck..and do feel free to ask more questions...
 
D

David Portwood

The problem is not so such working a copy, but keeping track of the
changes and fixes you make. I mean, if you spend a whole day making
changes, and additions to your application, you could have changed 12
forms, the layout of 5 reports..and code in a dozen different places. and,
we not even talking about sql quires you modified. While you *can* keep
track of this, it certainly a bit tedious and VERY easy to miss something
you changed.

I won't deny this. I certainly would prefer to work directly on the original
database for exactly the reasons you point out.
So, what would I do now?
Well, I would try working your way though Tony's list if things to check,
and see if any helps.

if none of Tony's list helps, then you now kind of stuck between a rock
and hard place. Since you have something that seems to be limited in
performance. You either run un-split, or see if improvements can be made
in performance.

It was never my intention to deploy an unsplit database. However, I am up
against a deadline and at present I have an unsplit database that performs
acceptably and a split database that does not and I have no time to spend
investigating causes.

I realize now that I put off splitting too late. From what little I had read
previously, I thought performance could only be improved by splitting so I
wasn't expecting any problems along those lines.

Like a chef lacking the ingredients needed to make what he'd originally
planned, I will do the best I can with what I have. "Needs must when the
Devil drives" I think is the saying.
 
L

Larry Linson

The worst potential problem is that, one day, one change will make the
difference, and you'll fall victim to repeated and frequent database
corruption. The chances of corruption are significantly increased when
multiple users are logged in to the same monolithic database, or to the same
copy of a split front-end.

Fortunately, you may go for a long time without encountering such a
situation, but it may be silently corrupting without your realizing it.

If a split FE is corrupted, it's just a matter of replacing it with a backup
copy.

If the monolithic (unsplit) database is corrupted, you may lose some of or
all of your data as well. At the least, you'll have to somehow recover the
data entries/edits since the last backup.

I'll also recommend you review and explore the performance suggestions at
MVP Tony Toews' site, http://www.granite.ab.ca/accsmstr.htm.

Larry Linson
Microsoft Access MVP
 
D

David W. Fenton

Can't I work on a copy of the database while others are using the
production model?

This isn't the point.

A shared front end, split or unsplit, is unstable. You could
actually get by with sharing an A97 front end, but since A2K and on,
it just doesn't work. This is because Microsoft changed the way the
Access project is stored. In A97 and before, each object in your
front end was a record in a system table. But in A2K and beyond, the
whole Access project is stored in a BLOB field in a single record in
a system table. This is why you can't edit objects while users are
in the database, because the record with the BLOB in it is locked.

As to instability when multiple people open an A2K front end, the
reason for that is because of collisions in writing data back to the
BLOB field. You may not know it but Access automatically saves
certain properties, such as form sort orders and filters. So you can
end up with write conflicts between users. There can also be other
collisions between mulitple users.

The point is, you're using a single file in a way THAT IS NOT
NECESSARY. There is no utility in sharing a front end, as it's only
an application. It's *much* easier to *not* share the front end from
the standpoint of performance (less data pulled across the wire),
reliability and maintenance.

This is not some new innovation in Access. It has been the de facto
correct method for deploying multi-user applications for as long as
Access has allowed linked tables.

I've been programming Access professionally since 1996 (using Access
2 back then), and have never once deployed an unsplit application.
It was obvious to me then that it was the correct way to do it
because I understood what the requirements were -- I was no genius,
I just read up on deploying multi-user Access apps and followed the
instructions about how to do it.
 
D

David W. Fenton

Mr. Fenton, I think you are insulting me in order to advertize
yourself.

I don't need an advertising.
By
calling me "bloody stupid" you imply that you are, by contrast,
highly intelligent and skilled.

Your actions were "bloody stupid," whether you knew it or not.
I find this kind of thing to be a common practice
in the working world. You will probably argue that you are just
defending Access and perhaps this is true but I doubt your
motivation is that noble.

You said very stupid things. You blamed Access for the performance
problems, when the problems were caused by your poor planning.

I just pointed this out.
Certainly, in this newsgroup, I should probably not say or imply
anything against Access and I apologize for doing so. I would hope
that any lurkers would realize that my remarks stem from what are
probably fairly common newbie frustrations.

I was a newbie once, and I split my first multi-user application. I
say this not to make myself sound smart, but instead to show that
there's nothing remarkable about being able to figure it out.
In any event, let's not have any further interaction.

I couldn't care less one way or the other.

Just don't blame your tools for your own mistakes.
 
T

Todos Menos [MSFT]

MDB SUCKS THAT IS WHY

MOVE TO SQL SERVER AND ACCESS DATA PROJECTS

IF YOU DO NOT KNOW HOW TO DO THIS THEN YOUR JOB WILL GO TO INDIA
 
T

Tony Toews [MVP]

MDB SUCKS THAT IS WHY

MOVE TO SQL SERVER AND ACCESS DATA PROJECTS

IF YOU DO NOT KNOW HOW TO DO THIS THEN YOUR JOB WILL GO TO INDIA



Note that this person is really A a r o n K e m p f and that he is not an employee
of Microsoft.

Tony
--
Tony Toews, Microsoft Access MVP
Please respond only in the newsgroups so that others can
read the entire thread of messages.
Microsoft Access Links, Hints, Tips & Accounting Systems at
http://www.granite.ab.ca/accsmstr.htm
Tony's Microsoft Access Blog - http://msmvps.com/blogs/access/
 
T

Todos Menos [MSFT]

note that tony is neither

MOST
VALUABLE
or a
PROFESSIONAL


anyone with a clue would have started using SQL Server a decade ago;
it is a completely superior platform in all regards-- with no
negatives

only a retard that can't learn a real database would ever use Access
MDB
I mean get real-- move to ADP or real VB-- either way, Access MDB is
dead and it has been for a decade
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top