These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
 

Why are we not combining market data, player devs?

Author
Dragonaire
Here there be Dragons
#161 - 2011-12-16 23:23:00 UTC
This structure does save a lot of overhead but if anyone can really show where the versatility of the other way would be needed we can look at it. The other thing is the 'resultType' would have to be moved into the rowsets as well to mix order and history together which no one seems to have asked for before.

I just didn't see anyone really needing to mix order and history in the same message anyway. To go along with that there's nothing stopping you from including more than one message in a response as long as both parties want to do that and actually that will probably happen in the case of the pushes since it makes sense to just make a single connection to the receiver and send all the data to them when you can. I even see a case for the uploaders to make a connection and keep it open and send the scan results without having to reconnect all the time.

Finds camping stations from the inside much easier. Designer of Yapeal for the Eve API. Check out the Yapeal PHP API Library thread.

Kaladr
Viziam
Amarr Empire
#162 - 2011-12-20 19:20:14 UTC
Dragonaire wrote:
This structure does save a lot of overhead but if anyone can really show where the versatility of the other way would be needed we can look at it. The other thing is the 'resultType' would have to be moved into the rowsets as well to mix order and history together which no one seems to have asked for before.

I just didn't see anyone really needing to mix order and history in the same message anyway. To go along with that there's nothing stopping you from including more than one message in a response as long as both parties want to do that and actually that will probably happen in the case of the pushes since it makes sense to just make a single connection to the receiver and send all the data to them when you can. I even see a case for the uploaders to make a connection and keep it open and send the scan results without having to reconnect all the time.


I'd say keeping it at one type per message is preferable right now.

Creator of EVE-Central.com, the longest running EVE Market Aggregator

Dragonaire
Here there be Dragons
#163 - 2012-01-08 00:05:24 UTC
Thought I'd bump this back up to the top again before it got lost.

Finds camping stations from the inside much easier. Designer of Yapeal for the Eve API. Check out the Yapeal PHP API Library thread.

Vaerah Vahrokha
Vahrokh Consulting
#164 - 2012-01-08 01:26:30 UTC  |  Edited by: Vaerah Vahrokha
Callean Drevus wrote:
I still cannot understand how his database (EVE Central) is able to handle so much more brute forcing abuse than mine, while he undoubtedly gets a much higher data volume... someone tell me again that this is not simply due to him using PostgreSQL Roll



PostgreSQL is on another league compared to some versions of MySQL.

Also if you search in the PostgreSQL past and roots, you'll find how it's related with a number of other DB engines. Some of these derivatives I used to develop mission critical military software for, that would easily support > 1k concurrent users (Solaris on Ultra 4000) with a downtime of about 1 day per year. That day was used to upgrade the back end, not because the engine needed any downtime ever.
Steve Ronuken
Fuzzwork Enterprises
Vote Steve Ronuken for CSM
#165 - 2012-01-08 02:57:26 UTC  |  Edited by: Steve Ronuken
Mysql is pretty poor on scaling.


Postgres is better, though you'll want some form of connection pooling.

If you are using mysql I'd suggest making sure you have result caching turned on, and batch your updates (so you don't constantly invalidate the cache)

Woo! CSM XI!

Fuzzwork Enterprises

Twitter: @fuzzysteve on Twitter

Scrapyard Bob
EVE University
Ivy League
#166 - 2012-01-08 04:48:08 UTC
pgsql also benefits hugely from putting the transaction log on a separate spindle set from the main database, especially if you are doing heavy inserts (of millions of rows).

But mostly it just works and works well. The defaults are much better tuned in versions past 8.2-ish.
Dragonaire
Here there be Dragons
#167 - 2012-01-08 07:54:32 UTC
Using tokuDb instead of normal MyISAM or InnoDB tables is a great idea if you are dealing with really large tables.
http://www.tokutek.com/
I've done some testing even on fairly small data sets and it's much better there too.

I also prefer to use MariaDB over normal MySQL as it seems to work better and has less bugs in the main code.
http://mariadb.org/

Finds camping stations from the inside much easier. Designer of Yapeal for the Eve API. Check out the Yapeal PHP API Library thread.

Kaladr
Viziam
Amarr Empire
#168 - 2012-01-09 17:47:56 UTC
Vaerah Vahrokha wrote:
Callean Drevus wrote:
I still cannot understand how his database (EVE Central) is able to handle so much more brute forcing abuse than mine, while he undoubtedly gets a much higher data volume... someone tell me again that this is not simply due to him using PostgreSQL Roll



PostgreSQL is on another league compared to some versions of MySQL.

Also if you search in the PostgreSQL past and roots, you'll find how it's related with a number of other DB engines. Some of these derivatives I used to develop mission critical military software for, that would easily support > 1k concurrent users (Solaris on Ultra 4000) with a downtime of about 1 day per year. That day was used to upgrade the back end, not because the engine needed any downtime ever.


Some of it is PostgreSQL, some of it is heavy-handed caching, some of it is luck (maybe? Big smile)

Honestly, the biggest limit is disk bandwidth, which is a limit for writes (and impacts reads). You can cheat and run PostgreSQL in "NoSQL mode" (turn off synchronous commits), which erodes at the durability/server shutdown survivability.

The EC active dataset can be cached in RAM fairly easily (which is why I run with no less than 16GB, and the new system runs at 48GB), which helps read performance. Believe it or not, I am actually running into CPU contention now...

Creator of EVE-Central.com, the longest running EVE Market Aggregator

Dragonaire
Here there be Dragons
#169 - 2012-01-09 18:21:18 UTC
Everyone I know of that uses Yapeal in large deployments runs into the same problems with network I/O (rarely), DB bandwidth which when you look into it in depth turns out to be Disk I/O problems 99.9% of the time. Most shared hosting has very poor disk I/O so lots of memory to handle surges is a must but at some point it has to go to disk and then your 3GHz 8 way server just became a 50Mbps server in most cases P

Finds camping stations from the inside much easier. Designer of Yapeal for the Eve API. Check out the Yapeal PHP API Library thread.

Callean Drevus
Perkone
Caldari State
#170 - 2012-01-10 18:59:51 UTC  |  Edited by: Callean Drevus
I can assure you that EMK is not running on a shared host (anymore) Blink. The disk IO was a problem before, but since moving to Storm on Demand it hasn't been an issue anymore. Currently I'm just running into the limits of either my MySQL configuration knowledge, or the inherent problems in MySQL (or TokuDB, which I'm using now). The problem is the cache is invalidated most of the time due to updates. I'd rather update in memory, but that leaves the previously mentioned problem of data durability.

The feature I'm mostly talking about is the Trade Finder by the way. And I just found out last week that part of my speed issues were due to my insistence to do the whole calculation in the database, while EC actually does a lot in python instead.

Aside from that, I think it would be a good time to start implementing the new upload format now. Or at least, in the foreseeable future. I think we're mostly done with modifications for now.

Developer/Creator of EVE Marketeer

Kaladr
Viziam
Amarr Empire
#171 - 2012-01-10 21:21:31 UTC
EC does the "buy/sell" trade calculation in a (very unmaintainable) SQL query. The path finding is farmed out to C++, and the whole deal is sorted in Python.

The "sell/sell" trade finder is managed in Python.

The new buy/sell trade finder is now in Scala similar to how the sell/sell one worked before. Once Hotspot has had a pass at it its nice and speedy.

Creator of EVE-Central.com, the longest running EVE Market Aggregator

Garo Hertee
Eclipse Industrials
Quantum Forge
#172 - 2012-01-11 00:05:44 UTC
An excellent week for the Eve market sites...

Eve Central: 100% uptime
Eve Market Data: 100% uptime
Eve Marketeer: 100% uptime

Congratulations guys. Big smile
Dragonaire
Here there be Dragons
#173 - 2012-03-12 01:25:19 UTC
Just thought it would be a good idea to bump this back to the top again Blink

Finds camping stations from the inside much easier. Designer of Yapeal for the Eve API. Check out the Yapeal PHP API Library thread.

Desmont McCallock
#174 - 2012-03-20 07:35:06 UTC
Just a quick question.
Why is 'issuedDate' being parsed into DateTime format and not use the original *NIX timestamp (which is actually how the data have it)?
Is this some kind of DB restriction?
Callean Drevus
Perkone
Caldari State
#175 - 2012-03-20 20:39:40 UTC
issuedDate in the EVE cache is actually a strange windows time format, that absolutely has to be parsed, as far as I have been able to understand.

At least, I assume that is the one you are talking about.

Developer/Creator of EVE Marketeer

Desmont McCallock
#176 - 2012-03-20 21:22:36 UTC  |  Edited by: Desmont McCallock
I'll get into it further tomorrow as time is late and my head is spinning atm.

Edit: After some researching the 'issuedDate' is expressed in Windows NT time ticks, which has an initial datetime of '1601/1/1 00:00:00' much like *NIX timestamp has '1970/1/1 00:00:00'. For more info visit: http://support.citrix.com/article/CTX109645

So is it possible to upload the data with the Win NT timestamp and the parsing to be done on the server?
Callean Drevus
Perkone
Caldari State
#177 - 2012-03-21 09:30:22 UTC
Desmont McCallock wrote:
I'll get into it further tomorrow as time is late and my head is spinning atm.

Edit: After some researching the 'issuedDate' is expressed in Windows NT time ticks, which has an initial datetime of '1601/1/1 00:00:00' much like *NIX timestamp has '1970/1/1 00:00:00'. For more info visit: http://support.citrix.com/article/CTX109645

So is it possible to upload the data with the Win NT timestamp and the parsing to be done on the server?


Sure, as far as I know, but why give the server even more to do when it can just as easily be done on the client, and leave you with a more readable format when sending? I know I'd much rather see a real date than a string of numbers.

EDIT: It just occurred to me that parsing a datetime string is probably more of a hurdle for the server, but I still vote that over an esoteric numeric format, that everyone will think is a timestamp, while it really isn't.

Developer/Creator of EVE Marketeer

Desmont McCallock
#178 - 2012-03-21 11:22:26 UTC  |  Edited by: Desmont McCallock
TBH I don't run a server and I'm not so familiar with maintaining a DB. But parsing the WinNT timestamp isn't much of a hurdle. After all it's a one liner code and while the server is processing the data it could do the parsing.

Well of course the real question is with what format are the DB on the market sites storing the date currently. Cause I understand that switching to storing as timestamp would be a major structure change.

NVTL, what does Kaladr and Dragonaire have to say about it?

@Callean
And while you are reading this, are you going to support the unified format?
Dragonaire
Here there be Dragons
#179 - 2012-03-21 16:49:39 UTC
Desmont McCallock wrote:
Just a quick question.
Why is 'issuedDate' being parsed into DateTime format and not use the original *NIX timestamp (which is actually how the data have it)?
Is this some kind of DB restriction?
This was discussed some where earlier in the thread but I'm not finding it right now. The reason we choose the current format is it is easy to understand for people and computers. It's not OS dependent and most databases can work with it directly or it can be translate easily for those that don't. Most programming languages also can handle it with little trouble when need and more important since we're developing a 'standard' it makes much more sense to leverage other existing ones that have been well thought out, peer reviewed, and is well documented.

One thing to keep in mind is this is a data exchange format and not a data storage format and as originally stated we wanted it to be understandable even by a programmer that had never seen it before without having to read a bunch of docs somewhere. Much like JSON itself being able to describe it with a single page and just a couple of examples with descriptions was at least part of my original concept and I believe everyone else's. We also wanted something that was compact but not to the point that it becomes hard to understand or use. There was some early talk about using XML but it's just to bloated for something like this so that's where JSON won out.

Finds camping stations from the inside much easier. Designer of Yapeal for the Eve API. Check out the Yapeal PHP API Library thread.

Desmont McCallock
#180 - 2012-03-21 17:05:59 UTC
Sure, the logic behind the design of the unified format is unquestionable and my question was more than trivial.

The real question here is will the market sites (at least those that are receiving atm data) support that format?

Coding the EVEMon market uploader (with support for custom entered endpoints) will depend upon that implementation.