public void Read(AerospikeClient client, BatchPolicy policy, string ns, string set, string accountId)
        {
            Record record = client.Join(policy,
                                        new Key(ns, set, accountId),
                                        new Join("tickers", ns, set));

            if (record == null)
            {
                throw new Exception("Failed to read: " + accountId);
            }

            this.accountId = accountId;
            byte[]   positionsBytes = (byte[])record.GetValue("positions");
            Record[] records        = (Record[])record.GetValue("tickers");

            if (positionsBytes != null)
            {
                MemoryStream ms     = new MemoryStream(positionsBytes);
                BinaryReader reader = new BinaryReader(ms);
                int          count  = reader.ReadInt32();
                positions = new List <Position>(count);

                for (int i = 0; i < count; i++)
                {
                    positions.Add(new Position(reader, records[i]));
                }
            }
            else
            {
                positions = new List <Position>(0);
            }
        }