如何从持久化存储中读取数据

作者&投稿:愚盛 (若有异议请与网页底部的电邮联系)
如何从持久化存储中读取数据~

  对于数据的持久化存储,ios中一般提供了4种不同的机制。
  1.属性列表
  2.对象归档
  3.数据库存储(SQLite3)
  4.苹果公司提供的持久性工具Core Data。
  其实储存的形式无非就这么几种,而我们还必须要关心的是,这些文件会被放置在那个文件下,然后如何读取。
  也就是说:IOS上数据存储,我们要了解的两点,数据存储格式(也就是存储机制),数据存储位置。
  1》文件如何存储(如上面4点)
  2》文件存储在哪里。
  对于数据的操作,其实我们关心的是操作的速率。
  就好比在Adnroid中偏好存储,数据库存储,io存储一样。

从什么东西里面读取你都不说清楚。rom一般都有专用的读写工具。

1.Sample PERSON Table
首先,这是我数据库中PERSON的数据:

2.模型
这是一个Person.java类对应数据库中PERSON表的例子。
public class Person {

private long id;

private long orgId;

private String name;

private int salary;

// Constructor



// Getter and Setter methods



}

3.Maven Dependency
我已在我的项目 pom.xml 中指定了以下依赖项 :
<dependency>

<groupid>org.apache.ignite</groupid>

<artifactid>ignite-core</artifactid>

<version>1.5.0.final</version>

</dependency>

<dependency>

<groupid>org.apache.ignite</groupid>

<artifactid>ignite-spring</artifactid>

<version>1.5.0.final</version>

</dependency>

<dependency>

<groupid>mysql</groupid>

<artifactid>mysql-connector-java</artifactid>

<version>5.1.6</version>

</dependency>

4.Read-Through配置
从数据库中加载数据,你需要启用 read-through 模式和设置CacheConfiguration的cacheStoreFactory属性。你可以在pring XML配置文件或程序中设置这些值。
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">

<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>

<property name="url" value="jdbc:mysql://localhost:3306/mydbname"></property>

<property name="username" value="username"></property>

<property name="password" value="passwd"></property>

</bean>

<bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">

<property name="cacheConfiguration">

<list>

<bean class="org.apache.ignite.configuration.CacheConfiguration">

<property name="name" value="personCache"></property>

<!-- Enable readThrough-->

<property name="readThrough" value="true"></property>

<property name="writeThrough" value="true"></property>

<!-- Set cacheStoreFactory-->

<property name="cacheStoreFactory">

<bean class="javax.cache.configuration.FactoryBuilder" factory-method="factoryOf">

<constructor-arg value="myexamples.store.PersonStore"></constructor-arg>

</bean>

</property>

<property name="queryEntities">

<list>

<bean class="org.apache.ignite.cache.QueryEntity">

<property name="keyType" value="java.lang.Long"></property>

<property name="valueType" value="ignite.myexamples.model.Person"></property>

<property name="fields">

<map>

<entry key="id" value="java.lang.Long"></entry>

<entry key="name" value="java.lang.String"></entry>

<entry key="orgId" value="java.lang.Long"></entry>

<entry key="salary" value="java.lang.Integer"></entry>

</map>

</property>

</bean>

</list>

</property>

</bean>

</list>

</property>

<property name="peerClassLoadingEnabled" value="true"></property>

<!-- Other Ignite configurations-->

...

</bean>

5.实现CacheStore
现在我们有我们的模型,Maven依赖关系和缓存已配置到位,那么,现在是时候来实现存储。若从数据库加载数据,应实现CacheStore接口的 loadCache()和 load()的方法。
public class PersonStore implements CacheStore<Long, Person> {

@SpringResource(resourceName = "dataSource")

private DataSource dataSource;

// This method is called whenever IgniteCache.loadCache() method is called.

@Override

public void loadCache(IgniteBiInClosure<Long, Person> clo, @Nullable Object... objects) throws CacheLoaderException {

System.out.println(">> Loading cache from store...");

try (Connection conn = dataSource.getConnection()) {

try (PreparedStatement st = conn.prepareStatement("select * from PERSON")) {

try (ResultSet rs = st.executeQuery()) {

while (rs.next()) {

Person person = new Person(rs.getLong(1), rs.getLong(2), rs.getString(3), rs.getInt(4));

clo.apply(person.getId(), person);

}

}

}

}

catch (SQLException e) {

throw new CacheLoaderException("Failed to load values from cache store.", e);

}

}

// This method is called whenever IgniteCache.get() method is called.

@Override

public Person load(Long key) throws CacheLoaderException {

System.out.println(">> Loading person from store...");

try (Connection conn = dataSource.getConnection()) {

try (PreparedStatement st = conn.prepareStatement("select * from PERSON where id = ?")) {

st.setString(1, key.toString());

ResultSet rs = st.executeQuery();

return rs.next() ? new Person(rs.getLong(1), rs.getLong(2), rs.getString(3), rs.getInt(4)) : null;

}

}

catch (SQLException e) {

throw new CacheLoaderException("Failed to load values from cache store.", e);

}

}

// Other CacheStore method implementations.



}

为了方便起见,Ignite还为用户提供了一些具有默认实现CacheStore方法的CacheStoreAdapter类—— loadAll()、writeAll()和deleteAll()。
6.加载缓存
这是一个PersonStoreExample.java类调用IgniteCache.loadCache()方法,在内部将调用CacheStore.loadCache()方法的示例(在上一步中我们实现了)。
public class PersonStoreExample {

public static void main(String[] args) throws IgniteException {

Ignition.setClientMode(true);

try (Ignite ignite = Ignition.start("config/cluster-config.xml")) {

try (IgniteCache<Long, Person> cache = ignite.getOrCreateCache("personCache")) {

// Load cache with data from the database.

cache.loadCache(null);

// Execute query on cache.

QueryCursor<List<?>> cursor = cache.query(new SqlFieldsQuery(

"select id, name from Person"));

System.out.println(cursor.getAll());

}

}

}

}

7.开始Ignite集群
从命令shell中,使用下面的命令,自己安装Ignite文件夹并启动服务器节点:
$ bin/ignite.sh <path-to-Spring-XML-configuration-file>

确保personstore.java是在类路径中Ignite。这样做,你可以设置USER_LIBS环境变量,或将项目jar放入Ignite安装的libs文件夹中。
8.输出
从你的IDE,运行PersonStoreExample.java。


如何从持久化存储中读取数据
MySQL 8 之前,使用的动态变量不是永久性的,并且在重启后会重置。可在运行时使用 SET 语句更改这些变量,以影响当前实例的操作,但是我们必须手动更新 my.cnf 配置文件以使其持久化。在许多情况下,从服务端更新 my.cnf 并不是一个方便的选择,并且使变量仅被更新才能在后续重新启动时动态还原,而没...

如何从持久化存储中读取数据
首先,这是我数据库中PERSON的数据:2模型 这是一个Person.java类对应数据库中PERSON表的例子。public class Person { private long id;private long orgId;private String name;private int salary;\/\/ Constructor }

如何从持久化存储中读取数据
对于数据的持久化存储,ios中一般提供了4种不同的机制。1.属性列表 2.对象归档 3.数据库存储(SQLite3)4.苹果公司提供的持久性工具Core Data。其实储存的形式无非就这么几种,而我们还必须要关心的是,这些文件会被放置在那个文件下,然后如何读取。也就是说:IOS上数据存储,我们要了解的两点,数据...

如何从持久化存储中读取数据
严格来说应该不算。一般说持久化是一种对象服务,就是把内存中的对象保存到外存(比如硬盘)中,让以后能够取回,侧重点在保存而不是读取。

java持久化对象到文件后怎么读取出来?
public static Object readObjectFromFile(){ Object temp=null;File file =new File("test.dat");FileInputStream in;try { in = new FileInputStream(file);ObjectInputStream objIn=new ObjectInputStream(in);temp=objIn.readObject();objIn.close();System.out.println("read object success!"...

什么是持久化
持久化是指将程序中的数据在程序执行完毕后保存下来,以便在下次程序启动时恢复数据的状态。简单来说,就是将数据从临时存储(如内存)转移到持久存储(如硬盘)的过程。在软件系统中,数据持久化是一项至关重要的功能。由于计算机的内存是临时的,当程序关闭或系统重启时,内存中的数据会丢失。为了确保...

数据持久话是什么意思?
数据持久化是指将程序运行中的数据保存到磁盘等存储介质中,使得数据能够长期存储并可随时读取。在程序运行过程中,如果不对数据进行持久化,一旦程序停止运行,所有数据都会被清空,这就会导致大量的数据丢失。因此,数据持久化非常重要,它保障了系统的可靠性和稳定性。数据持久化的方式有很多种,常见的有...

怎么解决无法进行持久化储存?
对于无法进行持久化储存的问题,可以尝试以下解决方法:1. 检查储存设备:确保储存设备(如硬盘、SSD等)没有故障或损坏,可以通过检查设备状态、连接线路等方式进行排查。2. 检查权限设置:确保程序有足够的权限进行储存操作,尤其是在操作系统中设置了文件夹或文件的读写权限。3. 清理临时文件:有时磁盘...

什么是数据持久化?为什么要持久化?
数据持久化,简单来说,就是指在计算机内存中的数据模型与存储介质上的持久化模型之间的双向转换,涉及的对象模型可以是各种数据结构或对象,而存储模型则可能涵盖关系模型、XML或二进制流等多种形式。如Hibernate,就是一种实现对象模型到关系模型转换的典型框架。在数据持久化操作中,主要包括保存、更新、...

hbase是怎么进行读写的
HBase是一个基于Hadoop的分布式、可扩展的大数据存储系统,其读写操作是基于其底层的HDFS(Hadoop Distributed File System)进行的,同时利用MapReduce进行数据处理。1. HBase的读写操作基础是其数据存储结构,它采用了一种类似于Google Bigtable的稀疏、分布式、持久化存储的多维映射表。这张表由行键(Row...

建德市15987494521: 如何从持久化存储中读取数据 -
势真先威: 1.Sample PERSON Table 首先我数据库PERSON数据:2.模型 Person.java类应数据库PERSON表例 public class Person { private long id; private long orgId; private String name; private int salary;// Constructor …// Getter and Setter methods … }3....

建德市15987494521: 如何通过storm从hbase中读取数据 -
势真先威: t对tuple进行处理之后,通常要将数据缓存到redis,memcached等内存数据库中,对于数据量小的,可以缓存到内存中,但是对于大量持久化的数据,更多时候需要存储到分布式存储系统中,这里我选择HBase用于存储结果.参照官方文档,storm提供storm-hbase项目用于集成storm-hbasegithub /github.com/ptgoetz/storm-hbaseclone之后需要修改maven依赖的软件版本,其中hbase采用是0.98版本,但是我的测试环境是1.0.0版本,两个版本的API差别还是有

建德市15987494521: kafka获取数据的几种方式 -
势真先威: 一、基于Receiver的方式这种方式使用Receiver来获取数据.Receiver是使用Kafka的高层次Consumer API来实现的.receiver从Kafka中获取的数据都是存储在Spark Executor的内存中的,然后Spark Streaming启动的job会去处理那些数据....

建德市15987494521: 从关系数据库中读取数据是否属于持久化? -
势真先威: 严格来说应该不算.一般说持久化是一种对象服务,就是把内存中的对象保存到外存(比如硬盘)中,让以后能够取回,侧重点在保存而不是读取.

建德市15987494521: 数据在内存中是如何存储到的?又是如何读取的? -
势真先威: 应该是你的卡有问题了,在相机上如果能看到,说明照片存储区还在,可能是IO读取部分有毛病,也可能是接触不良之类的.我建议,如果照片不重要,格式化一下存储卡看看是否回复正常.如果舍不得照片又不多,可以试着从卡片导入机身内存储空间,机内大概有几十m内存,然后再导回格式化的好卡中.

建德市15987494521: hbase里的hlog存在哪?regionserver里还是zookeeper里?
势真先威: <p>看一下下图就知道了吧.</p> <p></p> <p>对于用户的一个表比如Blog,可能包括数据多达亿级</p> <p>该表的数据可以分布在多个HRegion</p> <p>而每个HRegion保存表的某一段数据</p> <p>UserTable (1)------HRegion(*)</p> <p>对于多...

建德市15987494521: redis数据持久化到到磁盘还是数据库? -
势真先威: redis本身数据存储在内存中,如果断电,数据会都没有,所以需要把数据保存在磁盘中,才能保存长久,这个就是持久化了,是保存在磁盘中呢

建德市15987494521: 本地保存数据的方式? -
势真先威: 可以对数据进行持久化,实体类实现Serilizable接口..保存的时候可以把持久化数据存储在文件中,恢复的时候也是读取文件大致读取出来是这样的:FileInputStream fis= new FileInputStream(file);ObjectInputStream ois= new ObjectInputStream(fis);Object obj=ois.readObject();ois.close();fis.close();

建德市15987494521: C# 多线程 大量数据实时接收\解析\存储 问题 -
势真先威: 1、定义两个线程安全的队列(System.Collections.Concurrent.ConcurrentQueue<T>)a跟b,其中a用于储存接受的数据,b用于储存要持久化的数据. 2、线程A循环读取数据并储存到队列a中. 3、线程B循环从队列a中读取数据.3.1、如果读...

建德市15987494521: C#中,我想持久化一泛型集合里的数据,写入文件中,怎样读出来转化成原来的类型
势真先威: 序列化 反序列化 操作即可.

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网