I recently came across a database where the data are horizonally partitioned
into 4 tables. I'm not sure if this was a poor design choice, or if it was
done for valid performance reasons. The schema of the tables are essentially
the same, it's just that they are named differenly and the columns are named
differenlty to differentiate the data from a business usage perspective. The
tables could easily be combined inot one by adding a new colum to the
clustered index that would be used to differentiate the business usage. I am
trying to evaluate whether combining the tables would improve performance or
if it would be better to leave them the way they are. Many queries that run
against these tables do not request records from more than one of the
tables, which is good. However, there are a number of processes that query
against all of the tables on the identical clustered index range. I am not
sure exactly how many rows are in the tables but I'm fairly certain the
entire database is < 50 GB.
Jul 20 '05
13 1604
It's a financial forecasting application and the data are heavily
manipulated by the users after copying from another version of the forecast.
Copying is just an easier way for them to get started vs. starting over
completely from scratch. They also run variance reports to compare different
versions of the forecast. To reduce the size of the database, I think an
archiving strategy would be appropriate.
"Dan Gidman" <da*******@gmai l.com> wrote in message
news:11******** **************@ f14g2000cwb.goo glegroups.com.. . For example, one thing that users routinely need to do is copy a large range of rows from all of the tables and insert them back into the same tables (with a new PK, of course).
This seems to me like a lot of redundant data will get created needlessly. It is probably why the db is +50 gig in size. Also a good indication of poor design. Is this data historic or frequently updated? if it is historic and is not changed (like a pos sales record) Why copy the data around so much?
Maybe I misunderstood the problem. The way I understood it:
1] a directory can be one of 3 types: input, output, or binary.
2] A job has up to 3 directories: input, output and binary.
3] A directory can be shared by more than one job.
Is that correct?
"Vincent Lascaux" <no****@nospam. org> wrote in message
news:41******** *************** @news.free.fr.. . Directories nick_name varchar(20) type byte //0: input, 1: output, 2:binary path varchar(1000) primary key(nick_name, type)
Job (JobID int primary key, JobName varchar(20) )
Job_Directory (JobID int, nickname varchar(20), type (byte) ) with PK on JobID + nickname + type Considering that any job has one and exactly one path of each type, you
have a 1-3 relationship. I dont know if it is better than 1-1, that I heard is bad :) And it makes the SQL queries more complex to write (for no added value)
-- Vincent
> 1] a directory can be one of 3 types: input, output, or binary.
True
And the same nickname can be used for different types 2] A job has up to 3 directories: input, output and binary.
Half true : a job has exactly 3 directories : one input, one output and one
binary directory
3] A directory can be shared by more than one job.
True
--
Vincent
Then like my design better. You may find it a pain to have to join to an
extra table, but with your design you need 3 joins to get each of the 3
directories related to a job. Also, if you ever have a 4th directory related
to a job you have to add a new column.
If you have no other attributes to add to the Job table, then you could get
rid of the job table and just do:
Directory (
nick_name varchar(20)
type byte //0: input, 1: output, 2:binary
path varchar(1000)
)
(with primary key(nick_name, type))
Job_Directory
(JobName nvarchar(20),
nickname varchar(20),
type (byte)
)
(with primary key(JobName, nick_name, type))
and fk to Directory on nickname, type)
"Vincent Lascaux" <no****@nospam. org> wrote in message
news:41******** *************** @news.free.fr.. . Directories nick_name varchar(20) type byte //0: input, 1: output, 2:binary path varchar(1000) primary key(nick_name, type)
Job (JobID int primary key, JobName varchar(20) )
Job_Directory (JobID int, nickname varchar(20), type (byte) ) with PK on JobID + nickname + type Considering that any job has one and exactly one path of each type, you
have a 1-3 relationship. I dont know if it is better than 1-1, that I heard is bad :) And it makes the SQL queries more complex to write (for no added value)
-- Vincent
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: sumGirl |
last post by:
Hello all,
Thinking about building a new database in the enterprise addition of
sql server and using some horizontal parititioning techniques in order
to accomaodat what will eventually be a monster huge database.
Can you share some hard earned experience, gotchas, etc...with me? We
will be setting up this server on a SAN array that will be made up of
just one or two huge virtual RAID10 volumes and I am also wondering
about the wisdom...
|
by: Duffey, Kevin |
last post by:
We are looking for information regarding any capabilities of PostgreSQL in regards to scalability. Ideally we want to be able to scale in both directions. What sort of solutions are out there for either or both directions of scalability? Specifically, open-source solutions would be most in need, but commercial applications are fine as well.
Thank you.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system...
|
by: Jeff Boes |
last post by:
I'm sure this is a concept that's been explored here. I have a table
(fairly simple, just two columns, one of which is a 32-digit checksum)
with several million rows (currently, about 7 million). About a million
times a day we do
select * from my_table where md5 = ?
to verify presence or absence of the row, and base further processing on
that information.
|
by: Jane |
last post by:
In Oracle we can partition a table as follows. What is the equivalent in DB2?
CREATE TABLE sales_list
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_state VARCHAR2(20),
sales_amount NUMBER(10),
sales_date DATE)
PARTITION BY LIST(sales_state)
(
|
by: shsandeep |
last post by:
DB2 V8.2 (not Viper yet and no range partitioning!!)
I have created a table T1 (col1, col2) with col1 as the primary key.
When I try to create a partitioning key on col2, it gives me error that it
should have all primary keys included.
So, I created table T1 again with col2 as the partitioning key.
Now, I do not have col1 as the primary key.
When I try to create col1 as the primary key, I get the following error:
1 The primary key, each...
| |
by: mitek |
last post by:
Hi, All
I have strange situation with table design for DB2 9.1 on Windows
I have 3 tables with same structure :
1 table - is MDC
2 table - is partitioned MDC table
3 table - is compressed partitioned MDC table
Each table in separate DMS tablespace
|
by: harrylarenson |
last post by:
Hi, Happy New Year.
I am trying to insert a query to a partitioned view but the error is :
Server: Msg 4436, Level 16, State 12, Line 1
UNION ALL view 'T' is not updatable because a partitioning column was not found.
Here is all my query statements :
create table t1
(ID int primary key,
Code int check(code between 1 and 15 ))
|
by: Woody Ling |
last post by:
I am starting to config a 64 bits DB2 in IBM 595 AIX box with 2 dual
core CPU and I would like to assigned one 'processor' for one db
partition. Should I config it as a 4 nodes or 2 nodes instances? How
about other setting such as IO cleaner, Default degree etc?
|
by: Nate Eaton |
last post by:
According to the original whitepaper on UDB range partitioning (http://
www-106.ibm.com/developerworks/db2/library/techarticle/0202zuzarte/
0202zuzarte.pdf), you can use a range as a criteria, either in the
UNION ALL view or in constraints. One restriction it lists, though, is
that the optimizer can't use a constraint that references a range
versus a discrete value for SQL containing host variables or parameter
markers. That was for V7 and...
|
by: mandor |
last post by:
Hello,
I need some advise in table design, and more specifically about table partitioning. I read some papers and there was mentioned that if a table is expected to hold millions of rows, it's a good idea to partition it.
Vertical partitioning, as I understood it, is separating data that differs in some way in a separate table, adding a key field as an identifier to what segment it belongs.
The particular table holds signal measurements...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look !
Part I. Meaning of...
| |
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,...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
|
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...
|
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,...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
| |
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...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |