473,889 Members | 1,387 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

tough choices

Hello:
We are designing two multi-user client server applications that
performs large number of transactions on database servers. On an
average Application A has a 50% mix of select and update/insert/delete
statements and application B has 80-20 mix of select and
update/insert/delete statements. Being able to scale the databases as
needed so the performance is unaffected, is one of our critical
requirements. We've been investigating Oracle 10g RAC and DB2 ESE as
alternatives and in both cases unfortunately, we get a lot more
marketing spin than real answers. I've looked through some of the
newsgroup postings on oracle and ibm's websites and most of the
discussions seem to be about high availability(an d technology
evangelism). The information we've gathered so far seems to point to:

1. The critical factor (and possibly the bottleneck) for Oracle's RAC
performance is the network and the storage access speed- if the
network does not have ample unused bandwidth or the rate at which
storage can be accessed by various nodes has reached the point of
diminishing returns - we won't get any additional performance by
simply increasing the number of nodes. Also, the application that
performs more writes will hugely increase the network traffic because
of synchronization requirements.

2. DB2 can deliver better performance but only if the data that is
accessed together is physically laid out together and the application
has knowledge of the physical data layout (so it can connect to the
right node in the cluster ). However, if, we separate the application
logic from physical layout of the data the performance will be
unpredictable.

All this is just hypotheses - if anyone has some real world experience
with these two offerings and can offer an objective opinion - we'd
really appreciate it.
Nov 12 '05
198 11615
> Please correct me if you think I am incorrect. But losing a single node
with RAC can not deprive users of access to data. The system continues
to run with no effect other than the loss of a few CPU's and their
associated RAM.

With DB2 I could lose a node and either lose access to some of the data
or, worst case, lose the entire database application.
Do you mean loose the database permanently or just until a fallover can be
accomplished or the hardware repaired? I don't know of a situation where
data would be lost permanently unless there was a multiple disk failure
affecting both the data and logs.
Correct me if I am wrong ... but it seems DPF
is an extra cost add-in only available on ESE systems with that some
functionality only works on AIX. One question ... is it supported by the optimizer?

Of course it is supported by the optimizer. The use of multiple partitions
enables parallel database access (inter-partition parallelism).
Intra-partition parallelism is available even on a single partition system
in certain circumstances.
To the best of my knowledge DPF is offered on all supported platforms of
DB2 for LUW.


Not according to:
http://www.developer.ibm.com/tech/fa...al?oid=2:82779

I don't know exactly what statement you are reading, but DPF (partitioning)
is available on DB2 ESE for Linux, UNIX, and Windows. These are the
platforms known as LUW.
Nov 12 '05 #41
> > > To the best of my knowledge DPF is offered on all supported platforms
of
DB2 for LUW.
Not according to:
http://www.developer.ibm.com/tech/fa...al?oid=2:82779

I don't know exactly what statement you are reading, but DPF

(partitioning) is available on DB2 ESE for Linux, UNIX, and Windows. These are the
platforms known as LUW.

Here is a link with the TPC-H benchmark results for DB2 on Linux with
multiple partitions. The first IBM system on the 100 GB test has 8 physical
nodes, with 2 CPU's per node and has 2 DB2 partitions per physical node
(total of 16 partitions).
http://www.tpc.org/tpch/results/tpch_perf_results.asp

The third system on the list (the 2nd IBM system) is a DB2 for Windows on a
single physical node with 8 CPU's running 8 DB2 partitions.
Nov 12 '05 #42
Mark A wrote:
Please correct me if you think I am incorrect. But losing a single node
with RAC can not deprive users of access to data. The system continues
to run with no effect other than the loss of a few CPU's and their
associated RAM.

With DB2 I could lose a node and either lose access to some of the data
or, worst case, lose the entire database application.


Do you mean loose the database permanently or just until a fallover can be
accomplished or the hardware repaired? I don't know of a situation where
data would be lost permanently unless there was a multiple disk failure
affecting both the data and logs.


I meant only until it is brought back on-line. DB2 is far more robust to
become ashes ... just toast. ;-)
Correct me if I am wrong ... but it seems DPF
is an extra cost add-in only available on ESE systems with that some
functionali ty only works on AIX. One question ... is it supported by
the
optimizer ?
Of course it is supported by the optimizer. The use of multiple partitions
enables parallel database access (inter-partition parallelism).
Intra-partition parallelism is available even on a single partition system
in certain circumstances.


So the optimizer knows that a query not requiring information from all
but one partition can and will query only the single partition?
To the best of my knowledge DPF is offered on all supported platforms of
DB2 for LUW.


Not according to:
http://www.developer.ibm.com/tech/fa...al?oid=2:82779


I don't know exactly what statement you are reading, but DPF (partitioning)
is available on DB2 ESE for Linux, UNIX, and Windows. These are the
platforms known as LUW.


Thanks. But still limited to ESE and still an additional license cost.
Is that correct?

Thanks.
--
Daniel Morgan
http://www.outreach.washington.edu/e...ad/oad_crs.asp
http://www.outreach.washington.edu/e...oa/aoa_crs.asp
da******@x.wash ington.edu
(replace 'x' with a 'u' to reply)

Nov 12 '05 #43
> > Of course it is supported by the optimizer. The use of multiple
partitions
enables parallel database access (inter-partition parallelism).
Intra-partition parallelism is available even on a single partition system
in certain circumstances.


So the optimizer knows that a query not requiring information from all
but one partition can and will query only the single partition?

DB2 partitioning is designed to optimize parallel SQL operations and
therefore data is randomly spread across the partitions with hash
partitioning to spread the load across the partitions (each with its own
processors, memory, etc.) This cuts down on the total execution time of the
SQL in almost all cases. In the case of a single row retrieval based on the
partitioning key, DB2 can calculate which partition has the data.

Range partitioning is not directly supported in DB2, but the same thing can
be done with multiple tables and a UNION ALL view, and the optimizer will
only query the table required. This has many benefits from a DBA standpoint
where partitions have historical data partitioned by date, because once the
date has closed, the table can be backed up without continuously backing up
a much larger partitioned table as new transactions are added to the same
table in Oracle.

The admin cost of adding new tables is about the same as adding new
partitions for each month (in an Oracle range partitioning scenario). This
can be done manually or automatically via application software. One example
of an application that uses multiple tables for time periods instead of
range partitioning is a check archive system by Viewpointe Archive Services:
http://www.viewpointearchive.com/default.aspx?pageid=5

However, there is also a feature in DB2 called MDC (multi-dimensional
clustering) which has some of the characteristics of range partitioning in
that it groups like data close together in a partitioned environment.

We have been through this many times before.

The bottom line is that total performance of Oracle and DB2 are similar.
Oracle "may" slightly excel in some areas and DB2 definitely excels in
others. 99.9% of customers and applications would not notice much
difference. The only exception would be if a company would use one database
product for one type system, and a different database for another type
application. The cost benefit tradeoff of that would be outweighed by the
increased cost of not standardizing on a single product.
To the best of my knowledge DPF is offered on all supported platforms ofDB2 for LUW.

Not according to:
http://www.developer.ibm.com/tech/fa...al?oid=2:82779


I don't know exactly what statement you are reading, but DPF (partitioning) is available on DB2 ESE for Linux, UNIX, and Windows. These are the
platforms known as LUW.


Thanks. But still limited to ESE and still an additional license cost.
Is that correct?

Yes DPF is an additional cost on top of the ESE license. Even so, it is less
expensive than an equivalent Oracle system.
Nov 12 '05 #44
Fair enough. That makes it the more important to reach a deep
understanding of a product before passing judgement.
After all, none of us falls for the patented "Krisp-O-Mat" when buying a
new fridge, right? That, us professionals, should leave to salespeople
in furniture stores and the shopping channel.

Cheers
Serge
--
Serge Rielau
DB2 SQL Compiler Development
IBM Toronto Lab
Nov 12 '05 #45
Daniel Morgan wrote:
Mark A wrote:
Please correct me if you think I am incorrect. But losing a single node
with RAC can not deprive users of access to data. The system continues
to run with no effect other than the loss of a few CPU's and their
associated RAM.

With DB2 I could lose a node and either lose access to some of the data
or, worst case, lose the entire database application. Daniel, you are still measures with two metrics :-)
When an Oracle RAC node goes down it has information that is needed by
the other nodes. All the remaining nodes are affected by that during
this timeframe where RAC gets its balance back.
I take your word, that this is in the second ballpark.
Now in a DB2 + DPF scenario, if DB Partition goes down all clients
connected to that partition get kicked.
All other clients will not get kicked and they may or may not feel that
a partition went down, depending on whether the downed partition is
needed or not. When you fire the gardner it will not slow down the
kitchenwork. The likely hood to get food is not affected by the number
of gardners you have.
This is a core differentiator between Oracle RAC and DB2 + DPF.
(not better, not worse, just different)
Do you mean loose the database permanently or just until a fallover
can be
accomplished or the hardware repaired? I don't know of a situation where
data would be lost permanently unless there was a multiple disk failure
affecting both the data and logs.

I meant only until it is brought back on-line. DB2 is far more robust to
become ashes ... just toast. ;-)

Right, so now the question is the race against time to get the down
partition up again. On the same hardware, different hardware, doesn't
matter.
Correct me if I am wrong ... but it seems DPF
> is an extra cost add-in only available on ESE systems with that some
> functionality only works on AIX. One question ... is it supported by the
> optimizer?

Of course it is supported by the optimizer. The use of multiple
partitions
enables parallel database access (inter-partition parallelism).
Intra-partition parallelism is available even on a single partition
system
in certain circumstances.

So the optimizer knows that a query not requiring information from all
but one partition can and will query only the single partition?

Absolutely.
Let's stick with a store example.
The schema involves a table with store-date (pk store id), an inventory
table (pk: store id, product id), a product table (pk: product id).
The partitioning would ne by store_id
(DB2 Stinger's design advisor would propose it).
The product table and store table is pretty fixed and small. It would be
replicated (another word for a synchronized cache).
If you want to query the inventory of Coffee in Starbucks at Time square
and how much that is worth.
The SQL will be a join across all those tables to look up the surrogate
keys for the store, retrieve all the product ids for coffee and then
sum up the price (stored in the inventory table) times inventory.
So what does the plan look like?
1. Get the store id (local to the coordinator partition)
2. Send the rest of the request to the db partition holding the that
store id data
Do a local join between the inventory and product table doing the
local aggregation
3. Pass the result back to the coordinator

At most two nodes were involved.
If the software associating the clients to db partitions has any brains
it uses the same mapping as DB2 and the coordinator is the right
partition to begin with.
Let's assume the query comes in with the store id rather than the store
name (more realistic actually). In this case a feature called "local
bypass" kicks in. The coordinator would simply pass the query on to the
right node.
Now does this require a bit of DB Schema design work? Absolutely.
But in a BI environment which is where DB2 + DPF plays you have that
knowledge. In return for their efforts the user gets near linear
scalability once the homework has been done.

DB2 + DPF is not sold as an HA solution it is sold for scale out.
To the best of my knowledge DPF is offered on all supported
platforms of
DB2 for LUW.
Not according to:
http://www.developer.ibm.com/tech/fa...al?oid=2:82779

I don't know exactly what statement you are reading, but DPF
(partitioning)
is available on DB2 ESE for Linux, UNIX, and Windows. These are the
platforms known as LUW.

Thanks. But still limited to ESE and still an additional license cost.
Is that correct?

Yes. It's a scale out solution.
If anyone tries to sell DB2 + DPF to a mom&pop shop with 100GB for HA
(s)he's missing the boat.

If you just want a simple HA solution with DB2 Stinger you will use the
HDR feature.
For currently available releases HA is driven with general solutions.
I'm no experts in this.. Too far away from my area.
For HA you need to compare: DB2 + HA solutions or soon DB2 + HDR.
To learn about HDR best ask in the informix newsgroup for HADR.
HDR is stage one of that port.

Just to wrap up:
The point being made is:
1. DB2 + DPF for near unlimited scale out
(DB2 supports 999 DB Partitions,
there >100 partition installation out there)
2. DB2 + DPF _supports_ HA solutions if needed
3. DB2 + DPF is not an HA feature and never was meant to be one.

My personal toughts on RAC are:
Oracle RAC is an HA feature with neat limited scale out ability
Oracle RAC has yet to proof how far it can scale out.

I don't believe that near linear scale out can be achieved without a
divide and conquer strategy of sorts. That strategy requires schema/app
changes.

Cheers
Serge
--
Serge Rielau
DB2 SQL Compiler Development
IBM Toronto Lab
Nov 12 '05 #46

Range partitioning is not directly supported in DB2, but the same thing can
be done with multiple tables and a UNION ALL view, and the optimizer will
only query the table required.
There is an implication here that Range Partitioning in Oracle and UNION
ALL table views in DB2 are equivalent. They are not. UNION ALL views in
DB2 are equivalent to UNIOn ALL views in Oracle. There are many
additonal things you can do with Range Partitioning, including global
indexes. That why Oracle implemented Range Partitioning (Oracle8) after
it had implemented UNION ALL views (Oracle 7.1)

This has many benefits from a DBA standpoint
where partitions have historical data partitioned by date, because once the
date has closed, the table can be backed up without continuously backing up
a much larger partitioned table as new transactions are added to the same
table in Oracle.
There is an implication here that DB2's UNION ALL views better support
rolling window operations than Oracle's Range Partitions. They are not.
A major design point of Range Partitions when they were provided in
Oracle8 was to add better support for rolling window operations than
what could be done for UNION ALL tables. You can, of course, back up 1
or as many partitions in a range partitioned table as you want to.
That's sort of the point.

The admin cost of adding new tables is about the same as adding new
partitions for each month (in an Oracle range partitioning scenario). This
can be done manually or automatically via application software. One example
of an application that uses multiple tables for time periods instead of
range partitioning is a check archive system by Viewpointe Archive Services:
http://www.viewpointearchive.com/default.aspx?pageid=5

Hmm - seems to require a LOT of help from IBM to make it work however -

"In addition to on demand storage, the IBM solution includes fully
managed hosting for Viewpointe’s IBM pSeries™ servers running the AIX®
operating system, as well as management of the advanced storage area
network (SAN)."

"To help Viewpointe manage its architecture and expand its capabilities,
IBM has a team in place that is dedicated completely to the Viewpointe
solution. The team includes a director of operations, who is responsible
for the smooth day-to-day operation of Viewpointe’s applications.
Through this single point of contact, Viewpointe has rapid access to a
full-time staff with a wealth of technical experience, as well as a deep
background in check processing.

A chief technical architect helps support Viewpointe’s existing
infrastructure and develops new requirements as new clients are brought
on or new product functionality is added. Another IBM manager leads a
solution design and delivery team that develops, codes, tests and
implements new product offerings. There is even a dedicated business
development manager who provides IBM sales resources during Viewpointe’s
sales process and works to increase IBM sales teams’ awareness of
Viewpointe’s product offering."

So let me understand this - IBM designs it, codes it, tests it, hosts
it, and sells it. What does Viewpointe the company actually do ? IBM
reference calls ?

<snip>
99.9% of customers and applications would not notice much
difference.
<snip>

Yes DPF is an additional cost on top of the ESE license. Even so, it is less
expensive than an equivalent Oracle system.


I guess if has to be if you have to also factor in the service cost of
an IBM Director of Operations, IBM Chief Technical Architect, an IBM
Development Manager and IBM Development Team, and an IBM BDM. By my
count, that's at least 3 million a year fully loaded before you even buy
a single peice of hardware.

Nov 12 '05 #47
Uhm.. given 3petabytes of storage I'm quite certain there is more to do
that maintaining a union all view.
Not sure how much Oracle Development Managers make, but your math
suggests that even I could overcome my aversion for Oracle's CEO for
that money ;-)

Cheers
Serge
--
Serge Rielau
DB2 SQL Compiler Development
IBM Toronto Lab
Nov 12 '05 #48
"Mark Townsend" <ma***********@ comcast.net> wrote in message
news:fo5Bc.1431 08$Ly.137947@at tbi_s01...
Range partitioning is not directly supported in DB2, but the same thing can be done with multiple tables and a UNION ALL view, and the optimizer will only query the table required.
There is an implication here that Range Partitioning in Oracle and UNION
ALL table views in DB2 are equivalent. They are not. UNION ALL views in
DB2 are equivalent to UNIOn ALL views in Oracle. There are many
additonal things you can do with Range Partitioning, including global
indexes. That why Oracle implemented Range Partitioning (Oracle8) after
it had implemented UNION ALL views (Oracle 7.1)

No they are not exactly the same. But they are close enough for most people
and most applications. DB2 for z/OS has had range partitioning for over 15
years and it is not all the great in my opinion. Range partitioning
certainly does not work well for share-nothing parallel operations. But
since both DB2 for z/OS and Oracle only support share-everything
parallelism, that is what they both have range partitioning instead of hash
partitioning (hash partitioning is designed to split the load evenly across
all partitions).
This has many benefits from a DBA standpoint
where partitions have historical data partitioned by date, because once the date has closed, the table can be backed up without continuously backing up a much larger partitioned table as new transactions are added to the same table in Oracle.


There is an implication here that DB2's UNION ALL views better support
rolling window operations than Oracle's Range Partitions. They are not.
A major design point of Range Partitions when they were provided in
Oracle8 was to add better support for rolling window operations than
what could be done for UNION ALL tables. You can, of course, back up 1
or as many partitions in a range partitioned table as you want to.
That's sort of the point.

Having actually worked on such applications, I can say that it can be done
quite well with DB2 UNION ALL views. If Oracle is slightly better in that
respect with range partitioning, then fine. I don't think it is deal
breaker. The use of range partitioning comes at a big cost, especially when
trying to balance a load across multiple partitions for true parallel
operations that are scalable. With range partitioning, one gets a lot of hot
spots on a particular partition (which is usually the most current monthly
or yearly data).

The admin cost of adding new tables is about the same as adding new
partitions for each month (in an Oracle range partitioning scenario). This can be done manually or automatically via application software. One example of an application that uses multiple tables for time periods instead of
range partitioning is a check archive system by Viewpointe Archive Services: http://www.viewpointearchive.com/default.aspx?pageid=5

Hmm - seems to require a LOT of help from IBM to make it work however -


In addition to the fact that the Viewpointe system check image system uses
DB2 EEE version 7 with multiple partitions as their database, Viewpointe has
also contracted with IBM to provide complete datacenter outsourcing
services. This is not required to make DB2 work, but complete data center
outsourcing is just another business that IBM happens to be involved in.

The good news is that a very large chuck of the check written in the US are
stored on that system for many of the largest banks in the US, so some of
your checks may be on there also. Maybe even some Oracle corporate checks.
When adding over 80 million checks every business day to the database,
fortunately they are using a robust and scalable database architecture.
Nov 12 '05 #49
Thanks very much everyone. This has been very helpful to us. We have
realized very quickly that we were going down the wrong path in trying
to figure out the right database for our customers upfront. Our client
apps work with the databases via genreic dbms connectivity apis and
sql and, we can easily allow our apps to pick either one of the
datasources (don't mind the extra development effort on the oracle and
db2 sql).
The ultimate choice of the DBMS platform will perhaps be best made by
our customers (who will have a much better understanding of their dbms
TCO based on existing infrastructure) .

~Sy
Nov 12 '05 #50

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

6
3006
by: Mica Cooper | last post by:
Hi, I have a series of Select menus on a page. I am trying to allow the user to click on the Select title and have it popup a help window. This works fine with the following code except that all the Select choices are lost. <A HREF="javascript:location='menu.jsp';window.open('menuhelp.jsp?menuID=5','me nuhelp',)">MenuTitle</A> I saw an example of a popup on a website that did not lose the menu choices.
4
1324
by: frank | last post by:
Hi there. Before anyone gripes about cross posting, Ill say upfront that I just posted this message to am SQL server newsgroup because I want feedback from database developers as well as asp coders... I want to create a web based software rating database. I have a number of objectives that I would need to achieve to make this a useable tool and some are not easy figure out considering my begginning level of db and asp knowledge. I am...
6
1739
by: apngss | last post by:
When an application needs to get information from another machine over the network, how many distributed computing choices out there? Here are the choices I know of, classifying by different programming languages HTTP (any??) RPC (C, C++) ..NET (Microsoft)
6
1537
by: Kennedy_f | last post by:
I did better in terms of score on this one than 291, but I found it much harder. Wordings of questions are difficult like the rest, but the DNS and CA scenarios were very tough to figure out. Take your time on the questions. I used uecrtify exam simulation. Make sure you know exactly what they are asking for and think it through. You will not pass unless you have experience with the product and have done a lot of prep work. Read the...
9
1692
by: Rhino | last post by:
How hard (and desireable) would it be to give the user certain choices when it comes to printing web pages? The pages on my site use colours and pictures and contain an imbedded menu, among other things. Now, I could make certain assumptions on the user's behalf, such as making the background white and the text black, suppressing the menu from the printed page, and even suppressing the printing of the pictures if they are merely...
2
1578
by: Tedros.G | last post by:
Okay this is a slightly tricky one for us newbies, butI'm guessing it'll be breeze for ou experts! Problem: You recieve a xml message which conforms to a common schema. Everything is great and your clients (who send you their data based on this agreed schema), do everything works as agreed and planned. Over the next few months a few clients suddenly decide to add extra nodes, therby breaking the schema validation. Then another client...
4
1917
by: wideasleep | last post by:
Hello everyone, I am looking for a way to remove choices from cascading combo boxes as each selection is made. Here's how this is laid out. The initial combo box is STAGE and it will have choices STAGE1, STAGE2, STAGE3 and that will cascade to the CODE combo box. The CODE selections will also have lb. amounts for each code item. For example purposes here's the layout for the STAGE choices in the CODE combo box and use your imagination...
5
2050
by: vajra1987 | last post by:
Hello everybody I am working on a Website built on JSP and Servlets . one of the features of the site is to give user the chance to subscribe to different newsletters under different categories. So for example, user1 surfs to the page which displays category sport and under that some options (check boxes) and he can choose zero or more, and he clicks to add the next catetory options , for example entertainement. I am new at Java and...
1
1531
by: jej1216 | last post by:
Background: I have an PHP form that inserts data into a MySQL DB, and it works. Severity of Incident: <select name="severity" size="1"> <option value="">Select a Severity Option</option> <option value="Level1 - No Obvious Harm">Level 1 - No Obvious Harm</option> <option value="Level2 - Non-permanent Harm">Level 2 - Non-permanent Harm</option> <option value="Level3 - Semi-permanent Harm">Level 3 - Semi-permanent Harm</option> <option...
0
9805
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10784
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10887
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9602
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
5825
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
6021
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4642
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
4248
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
3252
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.