Re: [Algorithms] Data base choices
Brought to you by:
vexxed72
From: Jesus de S. G. <ic...@bi...> - 2007-04-03 14:48:34
|
Hi, Since I discovered it I always been a reflection&serialization zealot. :) With serialization you centralized how the data is stored to disk. Programmers doesn't have to think how to store files or with representation to use for his classes. They use the serialization system writing the proper flags in his classes. Our serialization system supports backward compatibility along class versions, writing/reading to text/binary (without altering the code), etc. So for example you can generate a debug version of your data that can be edited with ultraedit that is 100% compatible with the binary data). Reflection has some advantages too, like having an unified editor system for class instances (that even can be used remotely) . Reflection & Serialization is so coupled that we ended up implementing serialization based on those properties that the reflection marked as serializable (like C#, Java). And none of this techniques is incompatible with loading data as fast as possible. Currently we use Asyinc I/O for loading data in parallel. With some optimizations you can almost get the same performance that an inplace technique (I have written about this in my blog http://entland.homelinux.com/blog/) Having these techniques, this is the way we manage our asset database: - Data is considered like source code. We have a common representation for all the platforms, for example a TGA, a Collada file. These files are like .c files - Data is compiled like code. Builders for each type are registered. The builder generate a class for each platform (optimized for each platform) and that class is serialized. These files are like .exe files (one for each platform) - We maintain in sourcecontrol only the data sources (like we only store .c files and not binaries) and the nightly build regenerate all the binaries (source code + data) each day. We are using mysqlite for managing all the data source and the dependencies. |