Home > Archive > SQL Anywhere Mobile > February 2006 > Question: SQL Anywhere 9 and Multiple Mobilink syncronization servers to one database









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Question: SQL Anywhere 9 and Multiple Mobilink syncronization servers to one database
Experimenting

2006-02-15, 8:25 pm

I'm going to experiment ... experiment with Sybase SQL Anywhere and the
Mobilink (ODBC) connection. In the past, we use one Anywhere server
(adapter) and one Mobilink connector. I plan on experimenting using 2
connectors.

With the SQL Anywhere database on a subnet that is not routable (inside
firewall), can I run 2 Mobilink connections to it? One would be running
in the DMZ or a system that has 2 IP's -- an external IP and an internal
IP. It would accept connection from the Internet and act as a gateway to
the main database inside the firewall. The other connector would
probably be running on the Anywhere server itself which is inside the
firewall.

Both connectors will be handling transactions using the same database
login id and there is a good possibility that and both will be needing to
communicate with the database at the same time -- I can't control when a
user might want to sync.

As I said, I'm going to experiment myself, but does anyone know of any
gotcha's with using 2 connectors to the one database and the same login
id's? Some thoughts are dirty reads -- transactions that are in the
process of being applied by one connection and the other connection using
that uncommitted data.

I guess I'm asking if anyone has used this setup and whether there are
inherent issues I need to account for?

Any insight is appreciated.
--
Charly
Breck Carter [TeamSybase]

2006-02-16, 7:24 am

Multiple MobiLink servers can be used with one consolidated database.
Note that a *single* MobiLink server makes 5 connections to the
consolidated database by default, and most people choose to increase
that number first, if they are looking for performance... in your
case, it sounds like you want two servers to deal with some kind of
network access situation.

Multiple synchronizations occur at the same time all the time, all
using the same login id... each simultaneous synchronization occurs on
different connection, and multiple synchronizations that happen to
occur on the same connection are single-threaded. E.g., the first 5
simultaneous synchs happen on connections 1 to 5, while synch 6 waits
until one of the first 5 synchs is done... unless you change that 5 to
some other number.

The MobiLink server runs at isolation level 2 (repeatable reads) by
default, so dirty reads aren't an issue... but blocked MobiLink
synchronization sessions can be... so keep your update transactions
short while MobiLink is in session :)

Breck

On 15 Feb 2006 15:35:49 -0800, Experimenting <JDoe@NotMyDomain.Com>
wrote:

>I'm going to experiment ... experiment with Sybase SQL Anywhere and the
>Mobilink (ODBC) connection. In the past, we use one Anywhere server
>(adapter) and one Mobilink connector. I plan on experimenting using 2
>connectors.
>
>With the SQL Anywhere database on a subnet that is not routable (inside
>firewall), can I run 2 Mobilink connections to it? One would be running
>in the DMZ or a system that has 2 IP's -- an external IP and an internal
>IP. It would accept connection from the Internet and act as a gateway to
>the main database inside the firewall. The other connector would
>probably be running on the Anywhere server itself which is inside the
>firewall.
>
>Both connectors will be handling transactions using the same database
>login id and there is a good possibility that and both will be needing to
>communicate with the database at the same time -- I can't control when a
>user might want to sync.
>
>As I said, I'm going to experiment myself, but does anyone know of any
>gotcha's with using 2 connectors to the one database and the same login
>id's? Some thoughts are dirty reads -- transactions that are in the
>process of being applied by one connection and the other connection using
>that uncommitted data.
>
>I guess I'm asking if anyone has used this setup and whether there are
>inherent issues I need to account for?
>
>Any insight is appreciated.


--
SQL Anywhere Studio 9 Developer's Guide
Buy the book: http://www.amazon.com/exec/obidos/A...7/risingroad-20
bcarter@risingroad.com
RisingRoad SQL Anywhere and MobiLink Professional Services
www.risingroad.com
David Fishburn

2006-02-16, 9:24 am

Experimenting <JDoe@NotMyDomain.Com> wrote in
news:p1a7v1ht0ne8p7o
ipa6cv11jcvnsgiranp@
4ax.com
of sybase.public.sqlanywhere.mobilink:

What you have described here is well within the "norms" for MobiLink and
ASA.

Please ALWAYS include version and MORE importantly BUILD number
with EACH post (dbeng9 -v).

--
David Fishburn
Certified ASA Developer Version 8
iAnywhere Solutions - Sybase
Professional Services
Please only post to the newsgroup
Please ALWAYS include version and MORE importantly BUILD number with
EACH post (dbeng9 -v).

EBFs and Maintenance Releases
http://downloads.sybase.com/swx/sdmain.stm

Developer Community / Whitepapers
http://www.ianywhere.com/developer

CaseXpress - to report bugs
http://casexpress.sybase.com

CodeXchange - Free samples
[url]http://ianywhere.codexchange.sybase.com/servlets/ ProjectDocumentList[
/url]

David Fishburn

2006-02-16, 9:24 am

"Breck Carter [TeamSybase]" < NOSPAM__bcarter@risi
ngroad.com> wrote in
news:rjt8v1tfmpdo0an
dn729dm5dde7euumgl1@
4ax.com of
sybase.public.sqlanywhere.mobilink:

....
BC> The MobiLink server runs at isolation level 2 (repeatable reads) by
BC> default, so dirty reads aren't an issue... but blocked MobiLink
BC> synchronization sessions can be... so keep your update transactions
BC> short while MobiLink is in session :)

Not quite right Breck.

ML server runs at isolation_level = 1.

You can easily verify this with this script:
CALL ml_add_connection_sc
ript( 'v1.0', 'begin_connection', '
CREATE VARIABLE @isolation_level INTEGER;
SET @isolation_level = 0;
SELECT connection_property(
''isolation_level'')

INTO @isolation_level;
MESSAGE ''isolation_level:''
+string(@isolation_l
evel);
' );

Then perform a sync and look at the minimized engine window output.

--
David Fishburn
Certified ASA Developer Version 8
iAnywhere Solutions - Sybase
Professional Services
Please only post to the newsgroup
Please ALWAYS include version and MORE importantly BUILD number with
EACH post (dbeng9 -v).

EBFs and Maintenance Releases
http://downloads.sybase.com/swx/sdmain.stm

Developer Community / Whitepapers
http://www.ianywhere.com/developer

CaseXpress - to report bugs
http://casexpress.sybase.com

CodeXchange - Free samples
[url]http://ianywhere.codexchange.sybase.com/servlets/ ProjectDocumentList[
/url]

Breck Carter [TeamSybase]

2006-02-16, 9:24 am

My bad, I got confused by the "repeatable reads" contradiction in the
docs <g>...

=====
MobiLink Administration Guide
Synchronization Basics
The synchronization process

Note
MobiLink operates using the ODBC isolation level
SQL_TXN_READ_COMMITT
ED as the default isolation level for the
consolidated database. MobiLink does so because repeatable reads are
required for conflict detection purposes. If you have no conflict
detection scripts or if you want to select an isolation level more
suited to your needs, you can set this level in your begin_connection
script.


On 16 Feb 2006 07:34:29 -0800, David Fishburn
<fishburn_spam@off.ianywhere.com> wrote:

>"Breck Carter [TeamSybase]" < NOSPAM__bcarter@risi
ngroad.com> wrote in
> news:rjt8v1tfmpdo0an
dn729dm5dde7euumgl1@
4ax.com of
>sybase.public.sqlanywhere.mobilink:
>
>...
>BC> The MobiLink server runs at isolation level 2 (repeatable reads) by
>BC> default, so dirty reads aren't an issue... but blocked MobiLink
>BC> synchronization sessions can be... so keep your update transactions
>BC> short while MobiLink is in session :)
>
>Not quite right Breck.
>
>ML server runs at isolation_level = 1.
>
>You can easily verify this with this script:
>CALL ml_add_connection_sc
ript( 'v1.0', 'begin_connection', '
> CREATE VARIABLE @isolation_level INTEGER;
> SET @isolation_level = 0;
> SELECT connection_property(
''isolation_level'')

> INTO @isolation_level;
> MESSAGE ''isolation_level:''
+string(@isolation_l
evel);
>' );
>
>Then perform a sync and look at the minimized engine window output.


--
SQL Anywhere Studio 9 Developer's Guide
Buy the book: http://www.amazon.com/exec/obidos/A...7/risingroad-20
bcarter@risingroad.com
RisingRoad SQL Anywhere and MobiLink Professional Services
www.risingroad.com
Experimenting

2006-02-17, 7:26 am

V9.0.2.3044

Thank you both for the replies. You confirmed what I suspected, but a
coworker was suggesting differently. In a way, a debate was settled.

On 16 Feb 2006 07:12:50 -0800, David Fishburn
<fishburn_spam@off.ianywhere.com> wrote:

>Experimenting <JDoe@NotMyDomain.Com> wrote in
> news:p1a7v1ht0ne8p7o
ipa6cv11jcvnsgiranp@
4ax.com
>of sybase.public.sqlanywhere.mobilink:
>
>What you have described here is well within the "norms" for MobiLink and
>ASA.
>
>Please ALWAYS include version and MORE importantly BUILD number
>with EACH post (dbeng9 -v).

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com