繁体   English   中英

什么是将整数数组(java)存储到MySQL数据库的好方法

[英]What's a good way to store an array of integers (java) to MySQL database

我一直在寻找各种解决方案来解决我的问题,但是对于我的具体案例我找不到确切的答案,因此想知道是否有人可以建议我或向正确的方向指出。

在我的Android Studio应用中,我有一个二维整数数组(表示颜色的网格)。 目前,网格的最大尺寸为250x250,但将来可能会增加。 我事先知道网格的大小。

我想将此数组存储在MySQL数据库中。 我当时想像是用逗号分隔的字符串(例如“ 1,2,3; 7,8,9”),但随后阅读了有关序列化的内容,想知道这样做是否会更好。 但是,我了解的越多,就越可能认为它对我正在做的事情过于矫kill过正。

我永远不需要访问数据库中的单个元素-它永远是一次加载整个网格。

关于什么是最有效的方法有什么想法?

如果您想全面了解性能和大小,建议您在数据库条目中使用BLOB类型。 然后使用Blob类的getBytes方法对其进行检索,将其包装在ByteBuffer中,将其转换为IntBuffer并将其读回到int数组中:)。

Blob b = (mysql stuff from JDBC);
byte[] bytes = b.getBytes(0, b.length());
ByteBuffer bbuffer = ByteBuffer.wrap(bytes);
IntBuffer ibuffer = ((ByteBuffer) bbuffer.rewind()).asIntBuffer();
int[] intArray = ibuffer.array();

然后使用:

intArray[y*gridWidth + x]

我会张贴更多的链接,但声誉不够:(无论如何,如果您用Google搜索一点,一切都非常简单。

再说一次,这只适用于您想要真正高效地使用它,而且我相信比我更聪明的人可以发明甚至更疯狂,更快的解决方案。 您甚至可以走得更远,存储短裤或字节而不是整数。 但是请记住, 过早的优化是万恶之源 您最好立即选择最简单的解决方案,并仅在它看起来太慢,需要太多数据等时才对其进行更改。

编辑:只是看到我没有解释如何实际存储它,本质上是相同的过程,但是倒退了。 如果需要,我可以将其添加到答案中,只需发表评论即可。

这取决于您的用例。 对于可扩展的设计,您可以添加一个新表。 这样,将来就可以自由添加更多可读格式的条目。这样,您就可以利用数据库中数据类型的约束(例如,仅允许整数),在将来向表中添加其他属性(列),并且您将需要更少的解析从数据库读取逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM