SQL数据库与将Java序列化对象写入文件?
我有一个用java编写的web应用程序,它是关于课程安排的。我使用文件系统来存储我的数据。我序列化了我的集合(其中的对象),并将它们收集到一个序列化对象中。每个用户都有一些用于系统数据和备份或准备好的表数据的文件。我的程序在用户输入时读取该文件(仅系统数据),在用户退出时将其写入该文件。 对象设计非常复杂,对象之间存在多对多关系。编写该程序的数据需要大量的连接操作和良好的SQL模式设计。此外,用户通常拥有数千条信息,其中包含数百条课程、教师、教室,甚至数千条限制条件。除此之外,用户之间没有连接。 在这个程序中,我看不到使用sql的任何好处。甚至我的系统也运行得很快。然而,许多不知道我的程序结构的开发人员建议我将数据库系统移植到SQL中SQL数据库与将Java序列化对象写入文件?,java,sql,database,serialization,Java,Sql,Database,Serialization,我有一个用java编写的web应用程序,它是关于课程安排的。我使用文件系统来存储我的数据。我序列化了我的集合(其中的对象),并将它们收集到一个序列化对象中。每个用户都有一些用于系统数据和备份或准备好的表数据的文件。我的程序在用户输入时读取该文件(仅系统数据),在用户退出时将其写入该文件。 对象设计非常复杂,对象之间存在多对多关系。编写该程序的数据需要大量的连接操作和良好的SQL模式设计。此外,用户通常拥有数千条信息,其中包含数百条课程、教师、教室,甚至数千条限制条件。除此之外,用户之间没有连接。
SQL相对于文件系统(带有序列化对象)的优势是什么?特别是对于我的非凡系统而言?仅列举一般使用SQL数据库的几个优势:
- 可扩展性:您可以将数据移动到单独的服务器,以减少应用服务器上的负载
- 可访问性:如果您希望将来发布程序的扩展,该程序可以独立运行,并且仍然可以访问相同的数据,而无需担心锁定文件等问题
- 安全性:数据库系统允许您将“权限”配置为允许谁写入数据和允许谁读取数据
- 可移植性:如果您将来决定将程序升级到其他技术,SQL语言是一种行业标准,可以相对轻松地从一个数据库供应商移植到另一个数据库供应商。您还可以独立于数据库将主应用程序移植到另一种技术,因为这两种技术都有驱动程序/库/连接/插件/任何您想称之为与数据库通信的东西
- 备份:您可以在应用程序联机时轻松运行备份。使用文件备份时,您可能会遇到锁定问题,或者必须关闭应用程序进行备份
- 人力资源:您可以雇佣数据库管理员来管理您的数据库,并减少开发人员/工程师的责任,以便他们能够专注于其他任务
- 监视:您可以在应用程序处于活动状态时监视或检查数据
- 允许大量结构化、半结构化和非结构化数据
- 鼓励面向对象编程
- 易于使用
- 而且比SQL灵活得多