大型互联数据属于数据库

Large Interconnected Data Belongs to a Database

如果你的应用程序要处理一个大型、持久、互联的数据集,毫不犹豫地把它们存到关系型数据库里。在过去,RSBMS(关系型数据库)使用起来很昂贵、稀缺、复杂,且最为笨重。但这已经不在是问题了。现如今,关系型数据库系统非常容易找到——就像你的系统里已经安装了一到两款。一些非常强大的RDBMS,如MySQL和PostreSQL,都是开源软件,所以开支不在是问题。更有意思的是,嵌入型数据库系统可以作为一个库链接到你的应用程序里,几乎不需要安装和管理——其中著名的开源软件是:SQLite和HSQLDB。这些系统都非常之高效。

如果你应用程序的数据已经大到超过系统内存了,RDBMS表的索引表现将比映射集合类型的库要快出几个数量级,这将破坏虚拟内存页。现代数据库产品可以根据你的需求轻松扩展。只要你需要,可以将嵌入型数据库扩展到大型数据库系统中。之后,你还可以从免费、开源的产品切换到支持更好或更强大的专有系统中。

一旦掌握了SQL,编写以数据库为中心的应用程序将会很愉快。当你正确规范地将数据存储到数据库之后,就可以通过高效可读的SQL查询来提取内容了;不需要写任何复杂的代码。同样的,单条SQL命令也可以做到复杂的数据改变。对于一次性修改——比如组织持久化数据的改变——你甚至不需要编写代码:只需启动数据库直观的SQL界面。相同的界面还允许你试验性查询,以避免常规编程语言的编译-编辑循环。

围绕RDBMS建立的代码还有个优点,就是处理数据元素间的关系。你可以通过声明的方式描述数据的一致性约束,以避免在边缘情况下忘记更新数据而获得悬空指针的风险。例如,你可以指定,当一个用户被删除后,那个用户发送的消息也应该被删除。

任何时候只要你想,都可以在数据库的实体间创建链接,简单地通过创建索引即可。不需要对类型字段做昂贵又大范围的重构。此外,围绕数据库的编程还支持多应用安全访问。这就可以很轻松地更新应用以实现并发访问,也可以使用最适合的语言和平台编写程序的部分代码。例如,你可以在JAVA中编写基于WEB的XML后段,在Ruby中审计脚本,在Processing中编写可视化界面。

最后,记住RDBMS会使尽浑身解数优化你的SQL命令的,让你专注于应用程序的功能优化,而不是算法调优。高级点的数据库甚至会充分发挥多核性能优势。随着技术的提升,你的应用程序表现也会更好。

0%