{"action":"created","issue":{"url":"https://api.github.com/repos/MinoMino/minqlbot/issues/14","labels_url":"https://api.github.com/repos/MinoMino/minqlbot/issues/14/labels{/name}","comments_url":"https://api.github.com/repos/MinoMino/minqlbot/issues/14/comments","events_url":"https://api.github.com/repos/MinoMino/minqlbot/issues/14/events","html_url":"https://github.com/MinoMino/minqlbot/issues/14","id":75848111,"number":14,"title":"Possible switch to a client-server NoSQL database","user":{"login":"MinoMino","id":519318,"avatar_url":"https://avatars.githubusercontent.com/u/519318?v=3","gravatar_id":"","url":"https://api.github.com/users/MinoMino","html_url":"https://github.com/MinoMino","followers_url":"https://api.github.com/users/MinoMino/followers","following_url":"https://api.github.com/users/MinoMino/following{/other_user}","gists_url":"https://api.github.com/users/MinoMino/gists{/gist_id}","starred_url":"https://api.github.com/users/MinoMino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MinoMino/subscriptions","organizations_url":"https://api.github.com/users/MinoMino/orgs","repos_url":"https://api.github.com/users/MinoMino/repos","events_url":"https://api.github.com/users/MinoMino/events{/privacy}","received_events_url":"https://api.github.com/users/MinoMino/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/MinoMino/minqlbot/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"MinoMino","id":519318,"avatar_url":"https://avatars.githubusercontent.com/u/519318?v=3","gravatar_id":"","url":"https://api.github.com/users/MinoMino","html_url":"https://github.com/MinoMino","followers_url":"https://api.github.com/users/MinoMino/followers","following_url":"https://api.github.com/users/MinoMino/following{/other_user}","gists_url":"https://api.github.com/users/MinoMino/gists{/gist_id}","starred_url":"https://api.github.com/users/MinoMino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MinoMino/subscriptions","organizations_url":"https://api.github.com/users/MinoMino/orgs","repos_url":"https://api.github.com/users/MinoMino/repos","events_url":"https://api.github.com/users/MinoMino/events{/privacy}","received_events_url":"https://api.github.com/users/MinoMino/received_events","type":"User","site_admin":false},"milestone":null,"comments":2,"created_at":"2015-05-13T05:05:17Z","updated_at":"2015-05-20T14:24:57Z","closed_at":null,"body":"Just thought I'd put this as a sort of warning, if you will. It's very likely I'll switch to a client-server NoSQL database when the Steam exclusive update hits. Why? Primarily for the following reasons:\r\n\r\n* Being able to run multiple servers using the same database. Obviously that would work with any client-server SQL database too, but see below.\r\n* Dynamic schemas. It's just so much nicer to be able to change schemas on the fly. This is why I'm leaning towards NoSQL and not just MySQL or something like that.\r\n* The data in the current SQLite databases will be useless due nicknames not being unique identifiers, making this the perfect opportunity to make this change.\r\n* NoSQL tends to fall short when it comes to complex queries. The bot uses extremely simple queries, so that's not an issue either.\r\n* I've been looking into ways to reduce both CPU and GPU load of QL to make it more viable to run multiple clients without having it hog resources unneccesarily on bot users who don't use it to play on, and I've had some success doing so, so that's even more reason to have a client-server database.\r\n\r\nAt the time of writing, I'm leaning towards MongoDB, as I've worked with it before, has a first-party Python driver and has good documentation."},"comment":{"url":"https://api.github.com/repos/MinoMino/minqlbot/issues/comments/103904555","html_url":"https://github.com/MinoMino/minqlbot/issues/14#issuecomment-103904555","issue_url":"https://api.github.com/repos/MinoMino/minqlbot/issues/14","id":103904555,"user":{"login":"MinoMino","id":519318,"avatar_url":"https://avatars.githubusercontent.com/u/519318?v=3","gravatar_id":"","url":"https://api.github.com/users/MinoMino","html_url":"https://github.com/MinoMino","followers_url":"https://api.github.com/users/MinoMino/followers","following_url":"https://api.github.com/users/MinoMino/following{/other_user}","gists_url":"https://api.github.com/users/MinoMino/gists{/gist_id}","starred_url":"https://api.github.com/users/MinoMino/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MinoMino/subscriptions","organizations_url":"https://api.github.com/users/MinoMino/orgs","repos_url":"https://api.github.com/users/MinoMino/repos","events_url":"https://api.github.com/users/MinoMino/events{/privacy}","received_events_url":"https://api.github.com/users/MinoMino/received_events","type":"User","site_admin":false},"created_at":"2015-05-20T14:24:57Z","updated_at":"2015-05-20T14:24:57Z","body":">I guess nicknames might not be 'main' unique identifier but I think they will be unique even after migration to steam exclusive. Also do you really think that current nicknames will be abandoned?\r\n\r\nYes, I do think so. That's standard practice for well-integrated Steam games. The nickname will likely be whatever nickname you use on Steam. Not to mention, the little teaser sponge gave the other day:\r\n\r\n![](http://i.imgur.com/yLbQWjS.png)\r\n\r\nSteam nicknames support unicode (and as opposed to the current system, whitespaces can be used freely), so that's likely the motivation for implementing that.\r\n\r\n>Imho, saying current databases will be useless is far-fetched.\r\n\r\nPersonally, I'd say thinking otherwise is far-fetched when it's clear they're looking to integrate the game with Steam and move away from their shitty infrastructure as much as possible."}}