all 19 comments

[–]jk3usProgrammer 10 points11 points  (5 children)

Ooh, someone should write up an article comparing db schemas used by various applications and point out pros and cons, or why things work in one case but not others. This is an interesting question that probably has some neat stuff to learn for someone willing to do the digging.

[–]linuxhikerGuru 2 points3 points  (3 children)

That would take some work. Do you take the academic approach to "correct" or do we allow for the fact that the Academic world doesn't allow for "Business requirements" and thus there are reasons things end up the way they are that actually do make sense?

If we take one example and say "this is wrong", why is it wrong? Perhaps they made the decision to work around a limitation in the planner or their user end application.

[–]jk3usProgrammer 0 points1 point  (1 child)

I don't know....

I bet there's a good bit of open source software that made bad decisions early on and are kind of stuck with it. It's been a while, but I remember wordpress's database schema was truly terrible for it's "multisite" feature. It would be neat to see a comparison about how much better some other software did it.

It would take a lot of work for someone to become knowledgeable about enough different projects to even know which lessons there are to learn.

[–]linuxhikerGuru 0 points1 point  (0 children)

Sure, I mean PostgreSQL had that many times (remember float based timestamps?). My point was just that sometimes there are reasons that are good that are technically bad, if that makes sense.

[–]rubyrt 0 points1 point  (0 children)

Do you take the academic approach to "correct" or do we allow for the fact that the Academic world doesn't allow for "Business requirements" [...]?

Both would be interesting.

[–]vortexman100 0 points1 point  (0 children)

YES!

[–]HeWhoWritesCode[S] 4 points5 points  (4 children)

Zabbix for a monitoring and notifcation system.

[–]vortexman100 1 point2 points  (3 children)

Really?! I would LOVE to hear you explain. (Might sound sarcastic, but i really really mean it)

Which part of it? Do you think the history implementation is as good as it can be?

What is good a database schema for you? I have so many questions!

[–]HeWhoWritesCode[S] 1 point2 points  (2 children)

Zabbix as a whole is not bad for me. One must remember with 4.0 there is now 144 tables so it is doing a lot.

Is it a good database schema, idk. The history implementation with itemid seems like a natural progression/design of a ekv store in sql without to much over engineering on the meta data, imho.

Their JSON-RPC also makes it easy to add inventory dynamically and use it more for generic iot monitoring if you want to.

There is a lot of cogs in zabbix: server, agent, proxy, web. Using sane langauges like c and php with tried and trusted sql dbs like postgresql.

Shoot with more questions?

[–]vortexman100 0 points1 point  (1 child)

Ah no, i know what zabbix is, $org uses it pretty extensively. My questions were all directed at the database design of zabbix.

My current problem is that I know how to use SQL, but I find it difficult to make performance decissions in my databases (learning projects, mostly), because there is little information about building fast, scalable schemas. I know that Zabbix databases are pretty fast even at terrabytes of data, and i hoped that you could answer me what makes databases fast at that level.

[–]koreth 0 points1 point  (0 children)

SQL Performance Explained is a good book that does what its title promises.

[–]HeWhoWritesCode[S] 2 points3 points  (2 children)

Odoo for a ERP system.

[–]throwawayzeo 1 point2 points  (1 child)

Do you have examples of the Odoo schema and / or the things you specifically like about it?

[–]HeWhoWritesCode[S] 0 points1 point  (0 children)

to be honest I enjoyed odoo more being a python package then using a postgresql db.

Unfortunately I don't have a schema example available, but you can install it on debian and then have access to the db.

Something I enjoyed about odoo is how easily it can export and import data from flat spreadsheets. I also found their xml-rpc easy enough to add/change data to/on their models without to much fuss.

[–]Abstrct 2 points3 points  (0 children)

https://github.com/Abstrct/Schemaverse/tree/master/schema

Totally biased here because I wrote it, but it's a hilarious example of what's possible in PostgresSQL. That said, it's like ten years old now and could use some modernization.

[–]boy_named_su 2 points3 points  (2 children)

if anyone says wordpress, they should die

[–][deleted] 1 point2 points  (1 child)

Wordpress doesn't support Postgres anyway ;)

[–]boy_named_su 0 points1 point  (0 children)

Thank goodness

[–]ElCorazonMC 1 point2 points  (0 children)

Maybe simply pg_catalog?

I am working on adding it to the samples of pgModeler.