Search Unity

[RELEASED] Database Control Pro

Discussion in 'Works In Progress - Archive' started by SolutionStudios, Jul 14, 2016.

  1. SolutionStudios

    SolutionStudios

    Joined:
    Aug 1, 2014
    Posts:
    109
    @luniac

    Database Control Pro is designed for large amounts of customisation. It includes a Login demo so you can have a basic login system setup in seconds. You can then edit the demo's Command Sequences to store much more data for each user and divide your users into your different user types. Command Sequences are basically server-side code and you can create and edit them in the Unity Editor using our own visual scripting solution.

    The system is very secure if set up correctly (the Login demo is a good example) as correct passwords are only transferred to the server on user registration and when the user logs in correctly and all data transferred is sent over SSL. We also make regular backups about once a month so if you accidently loose a large amount of data we might be able to get it restored for you. However, we take no responsiblity for any problems which might occur such as data being lost, our servers going down or hackers gaining access to data in any way.

    We do not support any IAP plugins at the moment. You would have to find your own way of doing this. We aim to add some form of IAP in the (very long term) future but we cannot guarantee anything.

    This is still true. We haven't finished developing the update yet. If your app largly relies on sending and recieving data to the database which cannot be hidden in the background, you may struggle developing your app with the current version due to the long response times (just try one of the demos mentioned in the first post). The current version also struggles to perform consistently under heavy usage.
    The new version will provide much faster response times with better scaling.

    Also, it will not be possible to update a project using the current version to the new version (once released) without having to setup all database functionality again from scratch due to the server changes.

    So, I would advise to wait until the next version is released (we aim for the end of September) before you add DCP to your app. You can try out the current version of DCP while you are waiting if you like. The Editor Windows within Unity will not change much in the new version so it should give you a good indication of what to expect.

    (Note that the pricing system will change when we release the new version. We haven't decided exactly what it will be yet but will post more information about it soon. If you buy it now you will be able to use the new version for at least a year with no extra cost)
     
  2. luniac

    luniac

    Joined:
    Jan 12, 2011
    Posts:
    614
    ok thanks for the information. Very helpful.
    What about encryption like RSA, AES, i see other plugins on asset store saying they support these encryptions.
    How does that compare to SSL?
     
  3. luniac

    luniac

    Joined:
    Jan 12, 2011
    Posts:
    614
    Hmm regarding IAP, i guess i can use Unity IAP and then using data from that i can modify the database using your plugin.

    I really like the visual server control feature you have, i'll really consider waiting until your updated infrastructure, if i dont find a different solution for me first.

    Thanks again.
     
  4. SolutionStudios

    SolutionStudios

    Joined:
    Aug 1, 2014
    Posts:
    109
    I will try to explain without going into too much detail:

    SSL is used to protect data during transfer where the client and server do not require the same keys to begin with. The client and server agree on a set of encryption methods before any data is sent, so if it is intercepted by a 3rd party it will not give any unencrypted data away. When you see 'https' instead of 'http' at the start of a url, it means SSL is being used. A lot of online banking systems use SSL without aditional encryption which shows just how secure it is.

    AES is an encryption algorithm. It requres the same key to encrypt and decrypt so would normally be encrypted client side and decryped server side. AES comes with three standard key sizes: 128, 192 and 256 bits. The larger the key the stronger the level of encryption however even 128 bit AES is very secure.

    RSA is just another encryption method. It works slightly differently to AES as there are two different keys, a public key and a private key. RSA is sometimes considered easier to break as there are more methods than just brute-force to use. It is also older and generally slower than AES.

    SSL and AES/RSA are different as SSL uses encryption methods while transferring data, whereas AES and RSA are encryption methods themselves. In fact, the SSL connections with our DCP server (for the next update) normally includes 256 bit AES encryption along with RSA, making it very secure.

    When other assets say they are using RSA or AES and there is no mention of SSL I assume they support encrypting the data client side before it is sent and decrypting it server-side. I would say that this is less secure than our system as they must include the encryption keys in their final build so a hacker might be able to get the keys from the application files. Our system does not require there to be any encryption keys in the build.

    We haven't used Unity IAP before so i'm not sure how easy or secure this would be. But, we would be happy to try and help if you got stuck.

    I hope you find a solution which works for you.
     
  5. luniac

    luniac

    Joined:
    Jan 12, 2011
    Posts:
    614
    Thank you so much for clarifying, i understand completely now.
    I've also done a whole bunch of my own research on databases, servers, cloud db's, pricing, etc.
    I'm completely new to backend server/database development so it's quite a lot to take in haha!
    I'll be reading your documentation today, and will probably have more question soon :)

    As a developer im definitely looking for the simplest solution to actually program, with the most clear pricing.
    I was looking at google cloud pricing and that thing is a frickin maze with so many variables, i have no clue how to even predict the costs of that.
     
  6. luniac

    luniac

    Joined:
    Jan 12, 2011
    Posts:
    614
    ok i've read your documentation and i really like your command sequencer but i have a couple of important questions:

    1)Lets say i have a database with 1000 addresses. I want to create a command sequence where i input an address, and return all rows containing addresses within 5 mile radius of input address. Can this be done?

    2)Is it possible to filter rows? Let's say i have column "zip code", and i want to do sequence only on rows with zip code = 12345, is the only way to do this is to do For Loop command on entire database and inside Loop do If command saying If(zipcode == 12345)?

    3)Regarding your server infrastructure, i need little more info for peace of mind. Do you install and maintain your own servers or do you rent from provider like Google,Amazon Web Services, etc etc
    The first market for the app will be New York City, is your service good there?

    4) When you update to your new faster and more scalable infrastructure, how are the command sequences really gonna change? you says the database functionality is gonna be so different we'll have to remake all the sequences. But the existing commands in the documentation are very generic already, so what's really gonna change?

    5) i see GetData returns one value at a time, if i want to return several rows do i have to code in my script to receive multiple GetData from 1 command sequence and append a list array with the data?. Am i understanding it right?

    6)Is the following use case possible with the sequence system:
    I have
    1 database with Worker Profiles,
    1 database with Businesse Profiles
    1 database with Job Posts

    A User logged in as a Business Profile can create a new Job Post.
    So to solve this, for particular row in Business Profile database i can have jobpost Column which has cell containing for example "1_5_12".
    And this would mean in Job Posts database, rows 1,5,12 are RELATED to the particular row in Business Profile database.

    A User logged in as Worker can apply to job posts.
    So Worker Profiles database should also have a jobpost column which has cell containing "3_14" which means that row worker applied to Job Posts row 3 and 14.

    In the Job Post database, there should be column Owner containing row value of Business Profiles database to show which business created job post, and another column Applicants containing string like "1_5_6_7" which mean rows 1,5,6,7 in Worker Profiles applied to this job post.

    Is this recommended approach to do relations between databases?

    This would mean i CAN'T DELETE ROWS, only CLEAR, because the indexes are critically important to connect correctly right business and workers to posts.
     
    Last edited: Aug 11, 2017
  7. SolutionStudios

    SolutionStudios

    Joined:
    Aug 1, 2014
    Posts:
    109
    We don’t have any kind of geographic location system so there is no way for the server to interpret where an address is. However, if the address could be turned into coordinates (x and y values) then you can test the distances in Command Sequences by applying Pythagoras’ Theorem.

    The If Command with in a For loop is the best way to achieve this. But, it is as easy as dragging and dropping 2 Commands and filling in a few variable names. If we were to implement some kind of row filtering this is almost exactly what we would be doing server-side anyway.

    We rent our own servers from a couple of cloud providers. This is why our service has very little downtime. Also, our servers scale with demand and we can easily upgrade them when required. The current version of DCP costs us very little to maintain so we will keep it running even after the new version has been released.

    DCP works perfectly in New York City and almost everywhere across the globe. We are aware that the current version doesn’t currently work in China due to the ‘Great Firewall’ but this will be fixed in the new version.

    Command Sequences from your perspective will not change at all. We are rewriting server-side code to keep exactly the same Commands working in exactly the same way. The documentation won’t change much. Apart from the faster response times you wouldn’t notice much difference in how DCP works within Unity.

    The reason you have to remake all the sequences from scratch is because we won’t be able to transfer all the account and Command Sequence data our old system to our new system as it is stored in different formats.

    Yes, this is exactly right except Command Sequences only return strings. For example, if you wanted to return data from 5 cells you would need 5 GetData Commands to receive the data and a few StringOps Commands to join them into a single string. You would have to split the data up in your code in the game.

    Currently, Command Sequences in Database Control Pro are assigned to databases and they can only work on one specific database. This means you can’t get data from 2 different databases in a single request (we might add this feature in a future version yet to be decided).

    The best way to do this is to use a single database. I suggest you have a set of rows for each user. Each user has a first row with the main information about each user with a column to identify the user type. Then rows bellow this for job posts or applications the user has made. The first few cells of these rows can be left blank and cells further along can contain the relevant information. If you require a unique name for each user and unique job post names for the user’s posts then you can use these to identify the jobs which are being applied to rather than the row numbers.

    If you get stuck at any point, feel free to contact us at solution_studios@outlook.com and we will be happy to help.
     
    luniac likes this.
  8. AugmentedMarketer

    AugmentedMarketer

    Joined:
    Jun 28, 2017
    Posts:
    2

    This feature would be highly useful and aid in keeping things in one secure request, I would recommend you do implement this feature.
     
  9. SolutionStudios

    SolutionStudios

    Joined:
    Aug 1, 2014
    Posts:
    109
    Thank you for the feedback! It is on our todo list. Sadly our list is quite long at the moment so it might take some time.
     
  10. Kailric

    Kailric

    Joined:
    Aug 12, 2015
    Posts:
    17
    Greetings friends,

    We are considering using your service Database Control Pro and was wondering how development is going on the update? For our use we will simply need user account setup and store some user info. Probably our biggest transfer of data would be saved game info so that users can continue saves on different devices. Or perhaps in rejoining a multiplayer game after losing a connection. Those saves would be small, like around 15 kb. Other than that data transfer for users would be called only occasional.

    So I have some questions:

    When you say the current version is "slow" just how slow are we talking about? Since someone mentioned New York, how fast would it take to send 15kb from your servers to a user in New York. With today's technology I am assuming that it is still pretty fast, like a few seconds perhaps? Testing your Login Demo it seems that data is retrieved and sent from where I am to your servers in about 4-5 seconds.

    Also, It seems that if we have a user database that we could retrieve that database and then recreate it on the new servers pretty easy? As in "getOldUserInfo" then "saveUserInfoToNewServer". Is it more complicated than this?

    Lastly, we plan to release in about two months, so if you could give an update on how the new version is coming along and any expectant release times that would be great.

    I'll probably purchase DCP soon and start testing out its features. If I understand you correct the c# methods used will not actually change in this update?

    Ok, thanks for the work you all are doing!
     
  11. SolutionStudios

    SolutionStudios

    Joined:
    Aug 1, 2014
    Posts:
    109
    We have encountered some unexpected problems while working on the update. For example, at the moment Unity want us to remove all unityscript code from the package or it will be depreciated from the store :)eek:), so this is our priority. We where planning on releasing it at the September/November 2017, but this is now looking like Febuary/March 2018. However, for the use you have described the current version of Database Control Pro should be good enough. It will continue to work after the update if you choose not to update your project.

    When we built the demo scenes we literally imported Database Control Pro, set up a database for a demo scene and built it. This means the response times you get in the demos are exactly what you will be getting with Database Control Pro. I would 4-5 seconds on the current version is accurate.
    We haven't done enough testing with the new version to tell you the reponse times for it. Hopefully. we'll be able to provide some demos for the new version soon.

    This is a problem you may encounter. There will be no easy way to migrate a database from the current version to the new version. If you are using the current version with a lot of data on it, we recommend you don't update for this reason.

    If you wanted to attempt this, you would have to send a lot of requests to the current version and save the responses locally. So you would be downloading a individual string or row at a time. Then once this was complete, you would have to upload them one at a time to the new version. This would require some coding, good knowledge of how Database Control Pro works with what we call 'Command Sequences' and a lot of time for larger databases.

    At the moment we have the developer accounts and database creation setup, we have nearly finished getting 'Command Sequences' working and fixing bugs. This means we should be able to get the demos working soon. Once we have done this we will be rewriting the 'Viewer Window' and deciding on and implementing a new pricing model. We also want to add a few more features to the 'Sequencer Window' and release more tutorial videos. Our best estimate for release is Febuary/March 2018.

    This is correct, the methods will not change. If you want to learn how to use Database Control Pro you can learn it now and you should feel at home after the update :).
     
  12. Iiva

    Iiva

    Joined:
    Oct 25, 2014
    Posts:
    4
    Any news on the update?
     
  13. RadioactiveXP

    RadioactiveXP

    Joined:
    Nov 6, 2013
    Posts:
    69
    Is there a self-hosting version available or plans for one? what about a full source code version?
     
  14. IdiotsCode

    IdiotsCode

    Joined:
    Aug 23, 2015
    Posts:
    15
    Heyo!

    I just upgraded to 2018.3.6 and DCP doesn't seem to want to work anymore, will we ever receive an update for more recent versions of Unity?

    Cheers
     
  15. SolutionStudios

    SolutionStudios

    Joined:
    Aug 1, 2014
    Posts:
    109
    Sorry for the late replies guys, we haven't been keeping an eye on the forums for a while.

    @Iiva We had a big problem while working on the update causing some massive performance issues so we had to abandon it. The subscription model we had planned was also giving us a headache. We are considering creating a new platform from scratch with a web interface but are busy with other projects at the moment, and there doesn't seem to be high demand for it. We will continue to maintain the current version of Database Control Pro, and we'll let you know of any changes.

    @RadioactiveXP - Sadly not. Our asset is aimed at beginners or developers who aren't familiar with self-hosting. Also, if we provided the source code for the entire backend, it would be easy for someone to copy and create a competing service, so we have chosen not to do this.

    @IdiotsCode - Hi, DCP should be working in 2018 onwards, we've tested up to the latest version of 2019.1. There are a couple of issues (with the Third Person demo, and some harmless UI errors) but 99% works perfectly. What problems were you experiencing?
     
  16. megatron0

    megatron0

    Joined:
    Nov 19, 2018
    Posts:
    27
    hello recently i have been reading the docs and i want to make sure of something
    how can i store scriptable objects
    can i store them as a whole or
    store each int string value it contains
    or theres a 3rd method?
     
  17. SolutionStudios

    SolutionStudios

    Joined:
    Aug 1, 2014
    Posts:
    109
    @megatron0 - We sent you an email about this a few days ago

    Database Control can only store strings. You can store your variables individually as strings. For example, to store an int you’ll need to store it as a string and parse it back to an int when retrieving.

    But there are other options where you can store multiple variables as a single string.
    • Similarly you could serialize classes to XML strings. There are several resources online, but JSON tends to be easier to implement.
     
  18. codybaby

    codybaby

    Joined:
    Feb 19, 2019
    Posts:
    1
    I'm use the 2018.3.0f2 versions and I have been sent the email to u . I have some error msg but I don't know how to fix it can't create the database ....
     

    Attached Files:

  19. rennster200

    rennster200

    Joined:
    Jun 21, 2019
    Posts:
    65
    Hello, I have error where it says that I need to contact you... I get error while trying to setup data base... I am using 2018.4.4f1 version of unity
     
  20. rennster200

    rennster200

    Joined:
    Jun 21, 2019
    Posts:
    65
    Hey... Did you solve it?